/
/
Ошибка «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. В конец конфигурационного файла СУБД /root/.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 'ПАРОЛЬ';

, где ПАРОЛЬ - новый пароль.

Если эта команда сработала, то перейдите к пункту 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ПАРОЛЬ

, где ПАРОЛЬ - пароль, введенный в пункте 5.

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

 

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