Deiban, Ubuntu MySQL: “Access denied for user ‘debian-sys-maint’@’localhost’”
Для всех Ubuntu/MySQL или Debian/MySQL. У меня уже была создана папка /usr/lib/mysql с данными на другом сервере, и мне надо было перенести информацию на новый сервер.
После переноса информации, у меня высветилась подобная ошибка:
anton@server:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [fail]
* Starting MySQL database server mysqld [ OK ]
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Что же это на пользователь debian-sys-maint, где его искать, и зачем? Данный пользователь был создан MySQL исключительно для Debian, Ubuntu. Для того, чтобы иметь возможность запускать/останавливать базу данных и выполнять другие операции связанных с техническим обслуживанием.
Но тогда почему “Отказано в доступе” для этого пользователя? Ну, вопрос в том, что с каждым обновлением MySQL, пароль пользователя в базе данных переписывается. Смотрим в файле /etc/mysql/debian.cnf для того, чтобы найти пароль этого пользователя.
К счастью, решение этого вопроса довольно прост.
Вопервых мы открываем файл debian.cnf:
anton@server:~$ sudo /etc/mysql/debian.cnf
Содержимое файла должно выглядеть примерно так:
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user = debian-sys-maint
password = n4aSHUP04s1J32X5
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
Смотрим на пароль, в данном примере он n4aSHUP04s1J32X5
Следующий шаг, подключится к базе данных из под пользователя root. И ввести данную команду:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'n4aSHUP04s1J32X5';
После проделанной процедуры, мы перезагружаем базу данных:
anton@server:~$ sudo /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [ OK ]
* Starting MySQL database server mysqld [ OK ]
* Checking for corrupt, not cleanly closed and upgrade needing tables.