Outils pour utilisateurs

Outils du site


mysql_master_passwd

Différences

Ci-dessous, les différences entre deux révisions de la page.


mysql_master_passwd [2013/04/26 22:05] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Mot de passe de root perdu sur myQSL ======
 +
 +===== Symtôme =====
 +
 +Jusque là, tout allait bien, mais un beau jour... Ça commence souvent par un message de connexion impossible lorsqu'on tente de se connecter en tant que //root// à mySQL à travers //phpmyadmin//. La première chose à faire est de mettre hors de cause //phpmyadmin//, en se connectant à mySQL en ligne de commande (dans un terminal):
 +<code>
 +mysql -u root -p
 +</code>
 +après saisie de votre mot passe de //root// (de mySQL), le message suivant :
 +<code>
 +ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
 +</code>
 +confirme la perte du mot de passe de //root//.
 +
 +<note>
 +L'utilisatrice //root// de mySQL n'est pas l'utilisatrice //root// de Linux. Elles peuvent avoir des mots de passe différents.
 +</note>
 +
 +===== Réinitialisation du mot de passe =====
 +
 +La technique utilisée est de lancer mySQL dans un mode particulier, permettant de se connecter sans vérifier les identités. Voici le liste de commandes à passer (les "%%//%%" et le texte qui le suit ne doit pas être saisi, c'est un commentaire !) :
 +<code>
 +$ sudo -s                                                     // passer en mode superutilisattrice de Linux
 +# /etc/init.d/mysql stop                                      // arrêter le serveur mySQL
 +# /usr/sbin/mysqld --skip-grant-tables --skip-networking &    // lancer le serveur mySQL en mode "sans contrôle"
 +# mysql -u root                                               // se connecter ne tant que root de mySQL (pas de contrôle)
 +mysql> USE mysql                                              // on utilise la base contenant les mots de passe
 +mysql> UPDATE user SET Password = PASSWORD('mot_de_passe'   // on indique le nouveau mot de passe, sur deux lignes
 +mysql> WHERE Host = 'localhost' AND User = 'root';            // fin de la ligne, indiquée par le ";"
 +mysql> FLUSH PRIVILEGES;                                      // pour s'assurer que la modification sera bien prise en compte
 +mysql> quit                                                   // on a fini avec mySQL
 +# /etc/init.d/mysql stop                                      // arrêter mySQL
 +# /etc/init.d/mysql start                                     // le relancer en mode normal
 +# exit                                                        // abandonner le mode superutilisatrice (de linux)
 +</code>
 +
 +Alternative pour CentOS et les RedHat-like
 +<code>
 +mysqld_safe --skip-grant-tables &
 +mysql --user=root mysql
 +update user set Password=PASSWORD('new-password') where user='root';
 +flush privileges;
 +exit;
 +</code>
 +
 +Il ne reste qu'à vérifier que ça a servi à quelque chose :
 +
 +<code>
 +$ mysql -u root -p
 +</code>
 +
 +On ne devrait plus avoir le message d'erreur vu à la section précédente.
 +
 +
 +
 +
 +
 +