/
/
Ошибка "Access denied for user 'root'@'localhost' (using password: YES)" при работе с СУБД

Ошибка "Access denied for user 'root'@'localhost' (using password: YES)" при работе с СУБД

Симптомы

При выполнении действий в панели ispmanager появляется сообщение об ошибке

Access denied for user 'root'@'localhost' (using password: YES)

Эта ошибка может возникать при использовании любого нативного сервера баз данных - MySQL или MariaDB в зависимости от используемой операционной системы.

Причины

  • Пароль для пользователя "root" сервера баз данных задали раньше (далее СУБД), чем была установлена панель;
  • Сервер баз данных был установлен из стороннего репозитория помимо панели;
  • Пароль пользователя "root" баз данных (далее БД) изменён вручную вне панели и после её установки.

Решение

Первым делом, введите актуальный пароль пользователя "root" БД в разделе "Серверы БД".

Путь до раздела для Lite, pro, host:

«Базы данных»  → «Серверы БД» → «Изменить» → «Пароль»

Путь до раздела для Business:

«Настройки кластера» → «Узлы кластера» → выберите узел → меню "три точки" → «Серверы БД» → «Изменить» → «Пароль»

 

Если это не устранило ошибку, то убедитесь что пароль в файле "/root/.my.cnf" совпадает с паролем для пользователя "root" в панели и в базе данных нативной СУБД.

В случае утраты пароля, выполните следующие действия для его сброса:

1. В конец конфигурационного файла СУБД "my.cnf" добавьте секцию "[mysqld]" и два параметра, чтобы получилось:

[mysqld]
skip-grant-tables
skip-networking

Путь до файла в CentOS 7, CloudLinux, AlmaLinux 8, 9, RockyLinux 8:

/etc/my.cnf

Путь до файла в Debian 10, 11, Ubuntu 18, 20, 22:

/etc/mysql/my.cnf

 

2. Для применения новых параметров СУБД, перезапустите его службу:

  • systemctl restart mysql - для Debian, Ubuntu, RockyLinux 8 и AlmaLinux 9;
  • systemctl restart mysqld - для Almalinux 8;
  • systemctl restart mariadb - для CentOS 7:

 

3. Подключитесь к серверу баз данных:

mysql

 

4. Сбросьте привилегии:

FLUSH PRIVILEGES;

 

5. Измените пароль пользователя "root":

ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';

, где <password> - новый пароль.

Если эта команда сработала, то перейдите к пункту 6. Если команда не сработала, выполните следующую команду:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('<password>');

В случае, если возникнет ошибка "ERROR 1290 (HY000): The MySQL server is running with the —skip-grant-tables option so it cannot execute this statement", снова сбросьте привилегии:

FLUSH PRIVILEGES;

После этого снова попробуйте изменить пароль.

 

6. Удалите параметры, добавленные в конфигурационный файл СУБД  в пункте 1 - это необходимо для закрытия возможности несанкционированного доступа к СУБД.

 

7. Перезапустите службу СУБД соответствующей командой из пункта 2.

 

8. Для проверки подключитесь к серверу баз данных с помощью команды

mysql -uroot -p<password>

, где <password> - пароль, введенный в пункте 5.

 

9. В панели ispmanager перейдите в раздел "Серверы БД" и в поле «Пароль» введите ваш новый пароль. Опцию “Установить новый пароль” при этом отмечать не нужно.

Теперь взаимодействие панели с СУБД восстановлено!