ZaLinux.ru

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

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

#1698 - Access denied for user 'root'@'localhost'

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

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

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

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

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

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

sudo mysql

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

use mysql;
update user set plugin='' where User='root';
flush privileges;
exit

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

sudo systemctl restart mysql.service
mysql -u root -p

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

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

sudo mysql --user=root mysql

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

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

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

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

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

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

CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. Обновите phpMyAdmin

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

# dbc_dbuser: database user
#       the name of the user who we will use to connect to the database.
dbc_dbuser='phpmyadmin'

# dbc_dbpass: database user password
#       the password to use with the above username when connecting
#       to a database, if one is required
dbc_dbpass='some_pass'

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

1 Комментарий

  1. SanchO-SEK

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

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

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

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

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

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

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

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

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *