Січ 032014
 

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.