MySQL: “Access denied for user ‘debian-sys-maint’@’localhost’”

image_pdfimage_print

Para os usuários do MySQL em Ubuntu/Debian que estão tendo este erro, saibam que isto ocorre por alguma desincronia de atualização que mudou a senha do usuário no banco e não mudou a mesma num arquivo de configuração utilizado pela distribuição ou o contrário.

Este erro pode ser visualizado no MySQL quando se tenta reinicializar ou encerrar a execução do banco, como em:

/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)’

O usuário “debian-sys-maint” é criado pela distribuição Debian/Ubuntu para ser capaz de iniciar ou encerrar a execução do banco de dados MySQL, assim como diversas operações de manutenção do mesmo.

Para corrigir este problema, vá no arquivo /etc/mysql/debian.cnf para obter o password corrente deste usuário. Obviamente este password está errado no banco de dados, por algum erro que desincronizou o mesmo.

O conteúdo deste arquivo é algo parecido com o abaixo demonstrado:

cat /etc/mysql/debian.cnf

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = n4a5HUPO4slJ32X5
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
user = debian-sys-maint
password = n4a5HUPO4slJ32X5
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

Com o password conhecido, devemos agora conectar no MySQL como root e dar ao usuário debian-sys-maint todos os privilégios necessários para efetuar a administração e manutenção.

mysql -u root -p

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘debian-sys-maint’@’localhost’ IDENTIFIED BY ‘c3cCTvr3kG5zC3fa’;

Caso tenha problema com este comando, poderá tentar acessar o banco de dados mysql (use mysql;) e alterar o password deste usuário para o definido no arquivo. Isto deverá resolver o problema também.

Ao reinicializar o MySQL, verá que o problema foi solucionado e a menssagem de erro “access denied” não aparecerá mais. Com isto, foi corrigido o problema de permissão negada conforme poderá confirmar com os comandos abaixo:

/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.
Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!