Vous avez mis à jour votre version de MySql ?
Votre phpMyAdmin vous fait des misères ?
Bref, vous n’arrivez plus à vous connecter à phpMyAdmin et consorts, SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL toussa toussa…
Pas de panique, c’est tout simple, le mot de passe de votre utilisateur root est haché sur 16 caractères au lieu de 41, utilisant en cela l’ancienne version de hachage de MySql. Cette version moins sécurisée ne plaît pas au nouveau venu sur votre serveur qui refuse catégoriquement de s’abaisser à le décoder.
Pour régler le problème, je vous invite à vous connecter en ligne de commande à votre serveur MySql :
# mysql -uroot -p mysql
Vérifiez ensuite la longueur du mot de passe de votre user :
mysql> SELECT `User`, `Host`, Length(`Password`) FROM mysql.user;
Les mots de passe de 16 caractères ne sont plus supportés par le nouveau client MySql contrairement à ceux accusant 41 caractères au compteur. Si le user incriminé vous jette effectivement un petit 16 à la figure, nous devrions pouvoir régler ça. Il vous suffit d’utiliser la fonction de hachage pour encoder le mot de passe de votre utilisateur dans le bon format :
mysql> SET PASSWORD FOR 'user'@'localhost'=PASSWORD('mot_de_passe');
mysql> FLUSH PRIVILEGES;
Attention : Il est possible que votre fonction PASSWORD() s’entête à produire des mots de passe hachés sur 16 caractères, vérifiez-le facilement :
mysql> SELECT PASSWORD('mot_de_passe');
Si le résultat retourné affiche un petit 16 caractères au garrot, pas de panique !
mysql> exit // Pour sortir de l'invite mysql (on ne sait jamais)
Editez votre fichier de configuration my.cnf (généralement le bougre se cache dans /etc/mysql) et commentez la ligne « old-password » :
# old-password
Puis rechargez MySql :
# /etc/init.d/mysql restart
Enfin repassez en invite MySql et retentez la procédure, votre client MySql vous servira le mot de passe haché au bon format !
Place your comment