Reinitialiser le password ROOT de mysql
- Par: serveurblog
- Le: 28.01.2010 11:22:21
- Dans: Mysql
- Commentaires: 0
Source : http://www.wampserver.com/phorum/read.php?1,49856
- Réinitialisation du mot de passe root MySQL sous Windows
- Création d'un utilisateur avec tous les privilèges
Malgré toutes les opérations que vous avez effectuées, vous n'arrivez plus à vous connecter à MySQL (et PhpMyAdmin) en tant que root@localhost, avec ou sans mot de passe ou vous avez oublié votre mot de passe ou, par inadvertance, vous avez supprimé tous les utilisateurs.
La procédure ci-dessous vous permettra de mettre un autre mot de passe pour tous les comptes root ou de créer un utilisateur avec tous les privilèges et sans mot de passe.
Le nouveau mot de passe choisi doit être simple et surtout, comme la procédure utilise la ligne de commande, ne pas comporter de caractères accentués ni « exotiques ». Vous pourrez le modifier une fois que les connexions MySQL seront possibles via PhpMyAdmin.
Il est même souhaitable d'utiliser un mot de passe dont on connait le cryptage tel qu'il sera écrit dans la table users de la base mysql qui, depuis MySQL 4.1, sont toujours constitués d'un astérisque suivi de 40 chiffres hexadécimaux. Ainsi, pour MySQL le mot de passe "secret" est codé "*14E65567ABDB5135DOCFD9A7083032C179A49EE7".
Dans les exemples suivants, Wampserver est supposé avoir été installé dans G:\wamp. Il vous faudra adapter vos chemins en fonction de votre propre installation, ainsi que le numéro de version de MySQL que vous utilisez.
--- Prérequis ---
- a - Tout d'abord, vous devez étre dans une session Windows en tant qu'administrateur, si ce n'est pas le cas, redémarrer Windows pour ouvrir une session Administrateur.
- b - Connaître comment lancer une fenêtre de commande : Démarrer, Exécuter, taper cmd puis Entrée.
- c - Connaître quelques commandes de la ligne de commande comme cd, dir ; si vous ne savez pas, une fois la fenêtre de commande ouverte, taper help puis Entrée vous donnera la liste de toutes les commandes puis le nom d'une commande suivi de /? par exemple cd /? vous donnera la syntaxe et les paramètres de la commande cd Changer de dossier.
- d - Savoir et noter où est situé le fichier mysqld.exe de la version de MySQL utilisée. En principe, pour Wampserver G:\wamp\bin\mysql\mysql5.1.34\bin\mysqld.exe
- e - Savoir et noter où est situé le fichier my.ini de configuration de la version de MySQL utilisée. En principe, pour Wampserver G:\wamp\bin\mysql\mysql5.1.34\my.ini
--- Procédure ---
1. Quitter Wampserser si il était actif et vérifier dans le gestionnaire de tâches qu'aucun service ou tâche wampmysql ou mysqld.exe n'est activé.
Si une tâche mysqld.exe est activée, il faut l'arrêter par :
- Menu Démarrer -> Panneau de configuration -> Outils d'administration -> Services
Puis, trouver le service MySQL dans la liste, et l'arrêter.
Si la tâche MySQL ne fonctionnait pas comme un service, il faut utiliser le Gestionnaire des tâches pour la forcer à arrêter par Terminer le processus ou Fin de tâche
2. Créez un fichier texte, par exemple avec notepad et placez les déclarations suivantes dans celui-ci. (Ne pas oublier le point-virgule (winking smiley à la fin de chaque ligne)
2.1 Pour changer le mot de passe affecté à root :
UPDATE mysql.user SET Password = PASSWORD ('secret') WHERE User = 'root';
FLUSH PRIVILEGES;
Éventuellement, remplacer secret par le mot de passe que vous souhaitez utiliser, mais vous pourrez le changer après que la connexion à MySQL et PhpMyAdmin sera possible.
2.2 Pour ajouter un utilisateur avec tous les privilèges : (On peut remplacer toto par un autre nom et même mettre root si on avait supprimé tous les utilisateurs)
CREATE USER toto@localhost;
GRANT ALL ON *.* TO toto@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;
Les commandes UPDATE, FLUSH, CREATE et GRANT doivent être écrites chacune sur une seule ligne, commencer au début de la ligne et se terminer par un saut à la ligne.
3. Enregistrez le fichier. Pour cet exemple, le fichier sera nommé C:\mysql-init.txt.
4. Ouvrez une fenêtre de commande pour accéder à l'invite de commande : Menu Démarrer -> Exécuter -> cmd
5. Par la commande cd placez vous dans le dossier noté qui contient mysqld.exe. Par exemple : cd /d "G:\wamp\bin\mysql\mysql5.1.34\bin\"
6. Démarrez le serveur MySQL avec les options :
--defaults-file pour le fichier my.ini de configuration
--init-file pour le fichier de commande
--console pour que les commandes apparaissent dans la fenêtre de commande plutôt que dans un fichier journal, ce qui permettra de voir les erreurs éventuelles
par la commande : (Bien noter les doubles tirets --)
mysqld.exe --defaults-file="G:\wamp\bin\mysql\mysql5.1.34\my.ini" --init-file="C:\mysql-init.txt" --console
Si vous avez sauvegardé le fichier mysql-init.txt à un endroit autre que C:\ modifiez la commande en conséquence.
Le serveur exécute le contenu du fichier désigné par l'option --init-file lors du démarrage : changement de mot de passe du compte root ou création d'un utilisateur.
7. Quittez la console de commande MySql par Ctrl-C puis la fenêtre de commande par la commande exit.
9. Vérifier, via le gestionnaire de tâches, qu'il n'existe plus de processus mysqld, sinon Terminer la processus.
Vous pouvez supprimer le fichier C:\mysql-init.txt.
Vous devriez maintenant être en mesure de vous connecter à MySQL en tant que root en utilisant le nouveau mot de passe ou par le nouvel utilisateur ajouté, mais sans mot de passe.
Remarque :
Comme pour toutes les contributions que j'écris (Sauf indication contraire dûment explicitée), cette procédure a été essayée en grandeur réelle sous :
- Windows XP Home SP3 [à jour]
- Wampserver 2.0
- Apache 2.2.11
- PHP 5.2.9.2 (Modifié client MySQL 5.1.34)
- MySQL 5.1.34
- PhpMyAdmin 3.1.5
1- Le mot de passe affecté à root@localhost a bien été remplacé par "secret" sans que j'ai eu besoin de donner le mot de passe qui existait avant.
2- Un nouvel utilisateur à bien été ajouté, avec tous les privilèges sans avoir eu besoin de donner le mot de passe root.
Il est même souhaitable d'utiliser un mot de passe dont on connait le cryptage tel qu'il sera écrit dans la table users de la base mysql qui, depuis MySQL 4.1, sont toujours constitués d'un astérisque suivi de 40 chiffres hexadécimaux. Ainsi, pour MySQL le mot de passe "secret" est codé "*14E65567ABDB5135DOCFD9A7083032C179A49EE7".
Dans les exemples suivants, Wampserver est supposé avoir été installé dans G:\wamp. Il vous faudra adapter vos chemins en fonction de votre propre installation, ainsi que le numéro de version de MySQL que vous utilisez.
--- Prérequis ---
- a - Tout d'abord, vous devez étre dans une session Windows en tant qu'administrateur, si ce n'est pas le cas, redémarrer Windows pour ouvrir une session Administrateur.
- b - Connaître comment lancer une fenêtre de commande : Démarrer, Exécuter, taper cmd puis Entrée.
- c - Connaître quelques commandes de la ligne de commande comme cd, dir ; si vous ne savez pas, une fois la fenêtre de commande ouverte, taper help puis Entrée vous donnera la liste de toutes les commandes puis le nom d'une commande suivi de /? par exemple cd /? vous donnera la syntaxe et les paramètres de la commande cd Changer de dossier.
- d - Savoir et noter où est situé le fichier mysqld.exe de la version de MySQL utilisée. En principe, pour Wampserver G:\wamp\bin\mysql\mysql5.1.34\bin\mysqld.exe
- e - Savoir et noter où est situé le fichier my.ini de configuration de la version de MySQL utilisée. En principe, pour Wampserver G:\wamp\bin\mysql\mysql5.1.34\my.ini
--- Procédure ---
1. Quitter Wampserser si il était actif et vérifier dans le gestionnaire de tâches qu'aucun service ou tâche wampmysql ou mysqld.exe n'est activé.
Si une tâche mysqld.exe est activée, il faut l'arrêter par :
- Menu Démarrer -> Panneau de configuration -> Outils d'administration -> Services
Puis, trouver le service MySQL dans la liste, et l'arrêter.
Si la tâche MySQL ne fonctionnait pas comme un service, il faut utiliser le Gestionnaire des tâches pour la forcer à arrêter par Terminer le processus ou Fin de tâche
2. Créez un fichier texte, par exemple avec notepad et placez les déclarations suivantes dans celui-ci. (Ne pas oublier le point-virgule (winking smiley à la fin de chaque ligne)
2.1 Pour changer le mot de passe affecté à root :
UPDATE mysql.user SET Password = PASSWORD ('secret') WHERE User = 'root';
FLUSH PRIVILEGES;
Éventuellement, remplacer secret par le mot de passe que vous souhaitez utiliser, mais vous pourrez le changer après que la connexion à MySQL et PhpMyAdmin sera possible.
2.2 Pour ajouter un utilisateur avec tous les privilèges : (On peut remplacer toto par un autre nom et même mettre root si on avait supprimé tous les utilisateurs)
CREATE USER toto@localhost;
GRANT ALL ON *.* TO toto@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;
Les commandes UPDATE, FLUSH, CREATE et GRANT doivent être écrites chacune sur une seule ligne, commencer au début de la ligne et se terminer par un saut à la ligne.
3. Enregistrez le fichier. Pour cet exemple, le fichier sera nommé C:\mysql-init.txt.
4. Ouvrez une fenêtre de commande pour accéder à l'invite de commande : Menu Démarrer -> Exécuter -> cmd
5. Par la commande cd placez vous dans le dossier noté qui contient mysqld.exe. Par exemple : cd /d "G:\wamp\bin\mysql\mysql5.1.34\bin\"
6. Démarrez le serveur MySQL avec les options :
--defaults-file pour le fichier my.ini de configuration
--init-file pour le fichier de commande
--console pour que les commandes apparaissent dans la fenêtre de commande plutôt que dans un fichier journal, ce qui permettra de voir les erreurs éventuelles
par la commande : (Bien noter les doubles tirets --)
mysqld.exe --defaults-file="G:\wamp\bin\mysql\mysql5.1.34\my.ini" --init-file="C:\mysql-init.txt" --console
Si vous avez sauvegardé le fichier mysql-init.txt à un endroit autre que C:\ modifiez la commande en conséquence.
Le serveur exécute le contenu du fichier désigné par l'option --init-file lors du démarrage : changement de mot de passe du compte root ou création d'un utilisateur.
7. Quittez la console de commande MySql par Ctrl-C puis la fenêtre de commande par la commande exit.
9. Vérifier, via le gestionnaire de tâches, qu'il n'existe plus de processus mysqld, sinon Terminer la processus.
Vous pouvez supprimer le fichier C:\mysql-init.txt.
Vous devriez maintenant être en mesure de vous connecter à MySQL en tant que root en utilisant le nouveau mot de passe ou par le nouvel utilisateur ajouté, mais sans mot de passe.
Remarque :
Comme pour toutes les contributions que j'écris (Sauf indication contraire dûment explicitée), cette procédure a été essayée en grandeur réelle sous :
- Windows XP Home SP3 [à jour]
- Wampserver 2.0
- Apache 2.2.11
- PHP 5.2.9.2 (Modifié client MySQL 5.1.34)
- MySQL 5.1.34
- PhpMyAdmin 3.1.5
1- Le mot de passe affecté à root@localhost a bien été remplacé par "secret" sans que j'ai eu besoin de donner le mot de passe qui existait avant.
2- Un nouvel utilisateur à bien été ajouté, avec tous les privilèges sans avoir eu besoin de donner le mot de passe root.
Pas de commentaire