web-dev-qa-db-fra.com

accès refusé à l'utilisateur debian-sys-maint

J'ai eu un problème avec mysql. J'ai essayé d'exécuter ceci:

echo "show databases" | mysql -B -N

Mais j'ai:

ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)

Mais quand j'exécute:

/etc/init.d/mysql restart 

J'ai obtenu un "OK".

J'ai fait

GRANT ALL PRIVILEGES on *.* TO debian-sys-maint@localhost IDENTIFIED BY PASSWORD 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES;

d'où vient le mot de passe /etc/mysql/debian.cnf. Mais cela n'a pas aidé. (bien sûr, j'ai vidé priv et redémarré mysql).

42
Bartosz Kowalczyk

Le problème est que votre instruction GRANT utilise IDENTIFIED BY PASSWORD clause, et dans ce cas, mysql s'attend à obtenir un mot de passe haché, pas un texte en clair.

Utilisation IDENTIFIED BY 'your password' à la place, si vous souhaitez fournir un mot de passe en texte brut.

17
poncha

C'est parce que Debian a un compte MySQL debian-sys-maint utilisé pour allumer/éteindre et vérifier l'état. Le mot de passe de cet utilisateur doit être le même que celui stocké dans /etc/mysql/debian.cnf. Le fichier ressemble à ceci:

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

Si le mot de passe ne correspond pas (par exemple parce que vous l'avez modifié manuellement), le script init ne fonctionnera plus. Vous devez définir le mot de passe en fonction du fichier. Alors

mysql -u root -p
# Then type MySQL root password
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>';
110
Omesh

Le moyen le plus simple de restaurer l'utilisateur debian-sys-maint est de reconfigurer le paquet mysql-server-5.5. Que si vous connaissez le mot de passe de l'utilisateur root de MySQL, vous pouvez essayer de restaurer l'utilisateur et son mot de passe dans /etc/mysql/debian.cnf.

Sudo dpkg-reconfigure mysql-server-5.5

REMARQUE: si vous ne pouvez pas arrêter le pid mysql, exécutez simplement Sudo killall mysqld. Ceci est nécessaire pour reconfigurer le mysql-server-5.5.

3
shgnInc