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).
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.
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>';
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.