access refusé pour l’utilisateur debian-sys-maint

J’ai eu des problèmes 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 un ‘OK’.

J’ai fait

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

où mot de passe est de /etc/mysql/debian.cnf . Mais ça n’a pas aidé. (bien sûr, j’ai rincé priv et redémarré mysql).

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

Utilisez plutôt IDENTIFIED BY 'your password' si vous souhaitez fournir un mot de passe en clair.

C’est parce que Debian a un compte MySQL debian-sys-maint utilisé pour activer / désactiver et vérifier le statut. Le mot de passe de cet utilisateur doit être identique à 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 =  socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] host = localhost user = debian-sys-maint 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 d’initialisation 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 ''; 

Le moyen le plus simple de restaurer l’utilisateur debian-sys-maint est de reconfigurer le paquet mysql-server-5.5. 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 

NOTE: si vous ne pouvez pas arrêter mysql pid, lancez simplement sudo killall mysqld . Ceci est nécessaire pour reconfigurer le mysql-server-5.5.