Ошибка «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 перейдите в раздел Серверы БД и в поле Пароль введите ваш новый пароль. Опцию Установить новый пароль при этом отмечать не нужно.
Теперь взаимодействие панели с СУБД восстановлено!