Error access denied for user root localhost using password yes

Решение проблемы с ошибкой #1698 — Access denied for user ‘root’@’localhost’

Если при попытке входа в phpMyAdmin вы видите ошибку:

то данная статья поможет вам разобраться в проблеме и устранить её.

MySQL 5.7 изменила модель безопасности: теперь вход в MySQL под рутом (root) требует sudo (при этом пароль всё равно может быть пустым). Т.е. phpMyAdmin невозможно использовать под пользователем рутом. Подробное объяснение смотрите в статье Аутентификация по паролю и unix_socket в MySQL и MariaDB.

Самым простым (и самым безопасным) решением будет создать нового пользователя и предоставить ему требуемые привилегии.

Но начнём мы с другого решения:

Разрешить пользователю root подключаться к MySQL и MariaDB без sudo

Для получения доступа к базе данных MySQL/MariaDB обычному пользователю без использования sudo привилегий, зайдите в приглашение командной строки MySQL

и запустите следующие команды:

Переключиться на аутентификацию по паролю можно следующим SQL запросом:

Обратите внимание, что вам нужно ввести ПАРОЛЬ.

Затем попробуйте войти в базу данных без sudo, как показано ниже.

Это устаревший метод, он не работает в новых версиях MariaDB, но может по-прежнему работать в MySQL.

Для получения доступа к базе данных MySQL/MariaDB обычному пользователю без использования sudo привилегий, зайдите в приглашение командной строки MySQL

и запустите следующие команды:

Затем перезапустите службу MySQL и попробуйте войти в базу данных без sudo, как показано ниже.

Создание нового пользователя для работы с MySQL через phpMyAdmin

1. Подключитесь к mysql

2. Создайте пользователя для phpMyAdmin

Запустите следующие команды (замените some_pass на желаемый пароль):

Если ваш phpMyAdmin подключается к localhost, то этого должно быть достаточно.

3. Опционально: разрешение удалённых соединений

Помните: разрешение удалённому пользователю иметь все привилегии – это вопрос безопасности, имейте это ввиду, выполняя последующие шаги. Если вы хотите, чтобы этот пользователь имел те же привилегии во время удалённых подключений, дополнительно выполните (замените some_pass на пароль, используемый на Шаге #2):

4. Обновите phpMyAdmin

Используя sudo, отредактируйте файл /etc/dbconfig-common/phpmyadmin.conf обновив значения пользователь/пароль в следующих секциях (замените some_pass на пароль, используемый на шаге #2):

Связанные статьи:

  • Аутентификация по паролю и unix_socket в MySQL и MariaDB. Исправление ошибки #1698 — Access denied for user ‘root’@’localhost’ (100%)
  • Ошибка «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/run/mysqld/mysqld.sock’ (2 «No such file or directory»)» (РЕШЕНО) (55.6%)
  • Ошибка «mysqli_connect(): (HY000/1045): Access denied for user ‘username’@’localhost’» (РЕШЕНО) (55.6%)
  • Как установить веб-сервер Apache с PHP 7, MariaDB/MySQL и phpMyAdmin (LAMP) на Ubuntu (54.8%)
  • Как установить веб-сервер (Apache, PHP, MySQL, phpMyAdmin) на Linux Mint, Ubuntu и Debian (54.8%)
  • Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть (RANDOM — 0.8%)

Рекомендуемые статьи:

17 Комментарии

Пипец, почти всю ночь промучился с этим вопросом и чего только не перепробовал, а в итоге… Как вы говорите:

«MySQL 5.7 изменила модель безопасности: теперь вход в MySQL под рутом (root) требует sudo (при этом пароль всё равно может быть пустым). Т.е. phpMyAdmin невозможно использовать под пользователем рутом.»

Нет, вы «врубитесь» еще раз:

«MySQL 5.7 изменила модель безопасности: теперь вход в MySQL под рутом (root) требует sudo«

Потратил столько времени и сил, а Вы описали суть проблемы всего несколькими словами.

Создал нового пользователя ‘phpMyAdmin’ и всё заработало.

Огромное СПАСИБО за помощь!

P.S. Ранее таких трудностей не было — при установке MySQL он просил указать пароль для root после чего всё работало без проблем. В этот же раз при установке пароль для root не спрашивало и после под root пускало только с sudo (phpMyAdmin таким образом не мог авторизоваться). Не зная о изменении модели безопасности я и попал в тупик 🙁

и запустите следующие команды:

Затем перезапустите службу MySQL и попробуйте войти в базу данных без sudo, как показано ниже.

После этих манипуляций совсем зайти не могу

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO): что делать?

Решил, что пора изучать БД, и споткнулся, еще даже не сумев запустить БД.

В видеокурсе показано было следующее:
sudo apt-get install mysql-server
mysql -u root -p

Автор ввел пароль и спокойно зашел. Я получил ошибку, указанную в заголовке.
Начал гуглить и наткнулся примерно на следующие советы:
Совет 1: заходить через mysql -u root, то есть не добавлять -p. Не помогло, ошибка прежняя.
Совет 2: mysqladmin -u root password [newpassword]. То же самое.

Так что же делать?

  • Вопрос задан более трёх лет назад
  • 76967 просмотров

Сложный 1 комментарий

Это может быть, если пароль не был задан при установке.

Порядок действий для установки/смены пароля root в mysql следующий:

1. Остановить mysql:
sudo service mysql stop

2. Запустить сервис со следующими параметрами:
sudo mysqld —skip-grant-tables —user=root

Если выдал ошибку то в файле /etc/mysql/mysql.conf.d/mysqld.cnf в секцию [mysqld] добавить строчку skip-grant-tables и выполнить sudo service mysql restart

3. После этого подключиться к mysql командой:
mysql -u root

MySQL error 1045

Автор: Василий Лукьянчиков , vl (at) sqlinfo (dot) ru

Статистика форума SQLinfo показывает, что одной из наиболее популярных проблем является ошибка mysql №1045 (ошибка доступа).
Текст ошибки содержит имя пользователя, которому отказано в доступе, компьютер, с которого производилось подключение, а также ключевое слово YES или NO, которые показывают использовался ли при этом пароль или была попытка выполнить подключение с пустым паролем.

Причина возникновения ошибки 1045

Как ни банально, но единственная причина это неправильная комбинация пользователя и пароля. Обратите внимание, речь идет о комбинации пользователь и пароль, а не имя пользователя и пароль. Это очень важный момент, так как в MySQL пользователь характеризуется двумя параметрами: именем и хостом, с которого он может обращаться. Синтаксически записывается как ‘имя пользователя’@’имя хоста’.

Таким образом, причина возникновения MySQL error 1045 — неправильная комбинация трех параметров: имени пользователя, хоста и пароля.

В качестве имени хоста могут выступать ip адреса, доменные имена, ключевые слова (например, localhost для обозначения локальной машины) и групповые символы (например, % для обозначения любого компьютера кроме локального). Подробный синтаксис смотрите в документации

Замечание: Важно понимать, что в базе не существует просто пользователя с заданным именем (например, root), а существует или пользователь с именем root, имеющий право подключаться с заданного хоста (например, root@localhost) или даже несколько разных пользователей с именем root (root@127.0.0.1, root@webew.ru, root@’мой домашний ip’ и т.д.) каждый со своим паролем и правами.

Примеры.
1) Если вы не указали в явном виде имя хоста

2) Другой первопричиной ошибки mysql 1045 может быть неправильное использование кавычек.

3) Неочевидный вариант. IP адрес 127.0.0.1 в имени хоста соответствует ключевому слову localhost. С одной стороны, root@localhost и ‘root’@’127.0.0.1’ это синонимы, с другой, можно создать двух пользователей с разными паролями. И при подключении будет выбран тот, который распологается в таблице привелегий (mysql.user) раньше.

4) Аккаунт с пустым именем пользователя трактуется сервером MySQL как анонимный, т.е. позволяет подключаться пользователю с произвольным именем или без указания имени. Например, вы создали пользователя »@localhost с пустым паролем, чтобы каждый мог подключиться к базе. Однако, если при подключении вы укажите пароль отличный от пустого, то получите ошибку 1045. Как говорилось ранее, нужно совпадение трех параметров: имени пользователя, хоста и пароля, а пароль в данном случае не совпадает с тем, что в базе.

Что делать?

Во-первых, нужно убедиться, что вы используете правильные имя пользователя и пароль. Для этого нужно подключиться к MySQL с правами администратора (если ошибка 1045 не дает такой возможности, то нужно перезапустить сервер MySQL в режиме —skip-grant-tables), посмотреть содержимое таблицы user служебной базы mysql, в которой хранится информация о пользователях, и при необходимости отредактировать её.

Если изначально была ошибка:

Экзотический пример. Устанавливаете новый пароль для root@localhost в режиме —skip-grant-tables, однако после перезагрузки сервера по прежнему возникает ошибка при подключении через консольный клиент:
ERROR 1045 ( 28000 ) : Access denied for user ‘root’ @ ‘localhost’ ( using password: YES ) Оказалось, что было установлено два сервера MySQL, настроенных на один порт.

phpmyadmin

При открытии в браузере phpmyadmin получаете сообщение:

Error
MySQL said:

#1045 — Access denied for user ‘root’@’localhost’ (using password: NO)
Connection for controluser as defined in your configuration failed.
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.

Ни логина, ни пароля вы не вводили, да и пхпадмин их нигде требовал, сразу выдавая сообщение об ошибке. Причина в том, что данные для авторизации берутся из конфигурационного файла config.inc.php Необходимо заменить в нем строчки

Установка новой версии

Устанавливаете новую версию MySQL, но в конце при завершении конфигурации выпадает ошибка:

Это происходит потому, что ранее у вас стоял MySQL, который вы удалили без сноса самих баз. Если вы не помните старый пароль и вам нужны эти данные, то выполните установку новой версии без смены пароля, а потом смените пароль вручную через режим —skip-grant-tables.


источники:

http://qna.habr.com/q/439469

http://sqlinfo.ru/articles/info/16.html