Ошибка «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
Путь до файла в RHEL-based системах:/etc/my.cnf
Путь до файла в Debian-based системах:/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 перейдите в раздел Серверы БД и в поле Пароль введите ваш новый пароль. Опцию Установить новый пароль при этом отмечать не нужно.