Le manuel de référence MySQL contient des étapes détaillées sur la façon de réinitialiser le mot de passe pour root qui sont comme ci-dessous :
La procédure sous Windows :
- Connectez-vous au système Windows sur lequel MySQL s'exécute en tant qu'administrateur.
- Arrêtez le serveur MySQL s'il est en cours d'exécution. Pour un serveur qui s'exécute en tant que service Windows, accédez au gestionnaire de services :
Menu Démarrer -> Panneau de configuration -> Outils d'administration -> Services
Recherchez ensuite le service MySQL dans la liste et arrêtez-le.
Si votre serveur ne s'exécute pas en tant que service, vous devrez peut-être utiliser le Gestionnaire des tâches pour le forcer à s'arrêter.
- Créez un fichier texte et placez-y les commandes suivantes, chacune sur une seule ligne :
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
Save the file with any name. For this example the file will be C:\mysql-init.txt.SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
- Open a console window to get to the DOS command prompt: Start Menu -> Run -> cmd
- If MySQL is installed in C:\mysql. If MySQL is installed in another location, adjust the following commands accordingly.
At the DOS command prompt, execute this command:
C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt
Le contenu du fichier nommé par l'option --init-file est exécuté au démarrage du serveur, en modifiant le mot de passe root. Une fois le serveur démarré avec succès, vous devez supprimer C:\mysql-init.txt.
Si vous avez installé MySQL à l'aide de l'assistant d'installation de MySQL, vous devrez peut-être spécifier une option --defaults-file :
C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt
Le paramètre --defaults-file approprié peut être trouvé à l'aide du gestionnaire de services :
Menu Démarrer -> Panneau de configuration -> Outils d'administration -> Services
Recherchez le service MySQL dans la liste, cliquez dessus avec le bouton droit de la souris et choisissez l'option Propriétés. Le champ Chemin vers l'exécutable contient le paramètre --defaults-file. Assurez-vous de fournir l'argument --init-file avec le chemin système complet vers le fichier, quel que soit votre répertoire de travail actuel
- Arrêtez le serveur MySQL, puis redémarrez-le en mode normal. Si le serveur MySQL est exécuté en tant que service, démarrez-le à partir de la fenêtre Services Windows. Si vous démarrez le serveur manuellement, utilisez la commande que vous utilisez habituellement.
- Connectez-vous au serveur MySQL en utilisant le nouveau mot de passe. N'oubliez pas également de supprimer le fichier mysql-init.txt lorsque vous avez terminé.
Pour les environnements Unix et Linux, la procédure de réinitialisation du mot de passe root est la suivante :
- Connectez-vous au système Unix en tant qu'utilisateur racine Unix ou en tant qu'utilisateur sous lequel le serveur mysqld s'exécute.
- Recherchez le fichier .pid qui contient l'ID de processus du serveur. L'emplacement et le nom exacts de ce fichier dépendent de votre distribution, de votre nom d'hôte et de votre configuration. Les emplacements courants sont /var/lib/mysql/, /var/run/mysqld/ et /usr/local/mysql/data/. Généralement, le nom de fichier a l'extension .pid et commence soit par mysqld, soit par le nom d'hôte du système.
Arrêtez le serveur MySQL en envoyant un kill normal (et non kill -9) au processus mysqld, en utilisant le chemin du fichier .pid dans la commande suivante :
shell> kill `cat /mysql-data-directory/host_name.pid`
Notez l'utilisation de backticks plutôt que de guillemets avec la commande cat; ceux-ci entraînent le remplacement de la sortie de cat dans la commande kill.
- Créez un fichier texte et placez-y la commande suivante sur une seule ligne :
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');
Enregistrez le fichier avec n'importe quel nom. Pour cet exemple, le fichier sera ~/mysql-init.
- Redémarrez le serveur MySQL avec l'option spéciale --init-file=~/mysql-init :
shell> mysqld_safe --init-file=~/mysql-init &
Le contenu du fichier init est exécuté au démarrage du serveur, en modifiant le mot de passe root. Une fois le serveur démarré avec succès, vous devez supprimer ~/mysql-init.
- Redémarrez le serveur normalement. Connectez-vous au serveur MySQL en utilisant le nouveau mot de passe.
Alternativement, sur n'importe quelle plate-forme, le client mysql peut être utilisé pour définir le nouveau mot de passe, bien que ce soit un moyen moins sûr de réinitialiser le mot de passe (instructions détaillées ici):
- Arrêtez mysqld et redémarrez-le avec les options --skip-grant-tables --user=root (les utilisateurs Windows omettent la partie --user=root).
- Connectez-vous au serveur mysqld avec cette commande :
shell> mysql -u root
- Émettez les instructions suivantes dans le client mysql :
mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') -> WHERE User='root'; mysql> FLUSH PRIVILEGES;
Remplacez 'newpwd' par le mot de passe root réel que vous souhaitez utiliser.
- Vous devriez pouvoir vous connecter avec le nouveau mot de passe.