Ce didacticiel fournit des étapes pour réinitialiser ou modifier le mot de passe root du serveur MySQL au cas où l'utilisateur aurait oublié le mot de passe. Il suppose que vous avez accès au système pour arrêter et démarrer le serveur MySQL. Ce tutoriel est spécifique à MySQL 8.0 et au-dessus, même si cela devrait fonctionner immédiatement pour les anciennes versions de MySQL, y compris MySQL 5.7 . Nous pouvons réinitialiser le mot de passe root de deux manières, comme indiqué ci-dessous.
Remarques :Vous pouvez également suivre les didacticiels MySQL - Comment installer MySQL 8 sur Ubuntu, Comment supprimer complètement MySQL d'Ubuntu et Apprendre les requêtes SQL de base à l'aide de MySQL.
Mettre à jour le mot de passe
Nous pouvons simplement mettre à jour le mot de passe root de MySQL au cas où nous le connaîtrions déjà. Cela peut être fait en utilisant les commandes comme indiqué ci-dessous. Le ALTER est la commande préférée car elle fonctionne sur MySQL 5.7 et MySQL 8 , bien que vous puissiez suivre n'importe laquelle des commandes.
# Connectez-vous à MySQL
mysql -uroot -p
# OU
mysql -u root -p
# MySQL - 5.7.5 et versions antérieures
UPDATE mysql.user SET password=PASSWORD('password') WHERE user='root';
# MySQL - 5.7.6 et plus récent
UPDATE mysql.user SET authentication_string=PASSWORD ("password") where user='root';
# OR
SET PASSWORD FOR 'root'@'localhost' =PASSWORD("password");
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
# OR
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '';
# Flush
FLUSH PRIVILEGES ;
# Se déconnecter
quitter ;
Si vous avez oublié votre mot de passe root, vous pouvez suivre soit le processus A ou Processus B comme mentionné ci-dessous.
Processus A - Sécurisé
Dans ce processus, nous allons arrêter et démarrer le serveur MySQL pour utiliser le script init pour changer le mot de passe root.
Étape 1 - Arrêter le serveur
Nous devons arrêter le serveur comme première étape de ce processus. Cela peut être fait en utilisant les commandes comme indiqué ci-dessous.
# Utiliser init
sudo /etc/init.d/mysqld stop
# OU
sudo /etc/init.d/mysql stop
# Utiliser service
sudo service mysql stop
# Utilisation de systemd
sudo systemctl stop mysqld.service
# OU
sudo systemctl stop mysql
Étape 2 - Créer le fichier d'initialisation
Créez maintenant le fichier init et ajoutez la commande pour mettre à jour le mot de passe root comme indiqué ci-dessous.
# Créer un fichier d'initialisation - Utilisez votre éditeur préféré
sudo nanoinit-file.txt
# Ajoutez la requête pour mettre à jour le mot de passe
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
# OU
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password PAR '';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIÉ AVEC caching_sha2_password PAR '';
Étape 3 - Démarrer le serveur MySQL
Démarrez maintenant le serveur MySQL en utilisant le fichier init comme indiqué ci-dessous.
# Démarrer le serveur
sudo mysqld --init-file=init-file.txt &
# OU
sudo mysqld_safe --init-file=init-file.txt &
Cela peut générer un tas d'erreurs en fonction de l'installation de votre serveur.
Vous pourriez obtenir l'erreur avec un message - répertoire mysqld_safe '/var/run/
# Arrêter le serveur
# Créer un répertoire
sudo mkdir -p /var/run/mysqld
# Changer de propriétaire
sudo chown mysql :mysql /var/run/mysqld
# Démarrer avec le fichier init
sudo mysqld_safe --init-file=init-file.txt &
Vous pourriez recevoir le message d'erreur - ERREUR 2002 (HY000) :Impossible de se connecter au serveur MySQL local via le socket '/var/run/
# Démarrez MySQL Server normalement - Ubuntu
sudo service mysql start
# Accédez au répertoire sock
cd /var/run
# Prenez backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Arrêtez le serveur normalement - Ubuntu
sudo service mysql stop
# Restaurer la chaussette
sudo mv ./mysqld.bak ./mysqld
# Démarrer MySQL en mode non sécurisé
sudo mysqld_safe --skip-grant-tables &
Étape 4 - Arrêter et démarrer le serveur MySQL
Maintenant, arrêtez et démarrez le serveur MySQL en utilisant les commandes habituelles comme indiqué ci-dessous.
# Utiliser init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OU
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Utilisation du service
sudo service mysql stop
sudo service mysql start
# Utilisation de systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OU
sudo systemctl stop mysql
sudo systemctl start mysql
Terminez les processus existants si nécessaire. Utilisez uniquement si les commandes ci-dessus ne fonctionnent pas pour arrêter et démarrer le serveur.
# Trouver les processus
ps aux | grep mysqld
ps aux | grep mysql
# Tue les processus
sudo killall mysqld
sudo killall mysql
Étape 5 - Tester le mot de passe
Enfin, testez le nouveau mot de passe à l'aide de la commande comme indiqué ci-dessous.
# Tester le nouveau mot de passe
mysql -u root -p
Assurez-vous de supprimer le fichier init après avoir testé votre nouveau mot de passe. Si cela ne fonctionne pas, vous pouvez suivre le processus B .
Processus B - Moins sécurisé
Dans ce processus, nous arrêterons puis démarrerons le serveur MySQL sans exiger de mot de passe pour nous connecter.
Étape 1 - Arrêter le serveur
Nous devons arrêter le serveur MySQL en cours d'exécution comme première étape pour terminer ce processus. Cela peut être fait en utilisant les commandes comme indiqué ci-dessous.
# Utiliser init
sudo /etc/init.d/mysqld stop
# OU
sudo /etc/init.d/mysql stop
# Utiliser service
sudo service mysql stop
# Utilisation de systemd
sudo systemctl stop mysqld.service
# OU
sudo systemctl stop mysql
Étape 2 - Démarrer MySQL sans mot de passe
Maintenant, démarrez le serveur MySQL avec le mot de passe désactivé en utilisant la commande comme indiqué ci-dessous. Assurez-vous d'ajouter
esperluette (&) à la fin de cette commande. Il permet également --skip-networking automatiquement pour empêcher les connexions à distance.
# Démarrer sans mot de passe
sudo mysqld_safe --skip-grant-tables &
Vous pourriez obtenir l'erreur avec un message - répertoire mysqld_safe '/var/run/
mysqld ' pour le fichier socket UNIXne pas existe . Nous devons créer lemysqld et créezmysql en tant que propriétaire en utilisant les commandes comme indiqué ci-dessous.
# Arrêter le serveur
# Créer un répertoire
sudo mkdir -p /var/run/mysqld
# Changer de propriétaire
sudo chown mysql :mysql /var/run/mysqld
# Démarrer sans mot de passe
sudo mysqld_safe --skip-grant-tables &
Vous pourriez recevoir le message d'erreur - ERREUR 2002 (HY000) :Impossible de se connecter au serveur MySQL local via le socket '/var/run/
mysqld /mysqld .chaussette' . Dans un telcas , suivez les commandes ci-dessous pour qu'Ubuntu le résolve.
# Démarrer le serveur MySQL
sudo service mysql start
# Naviguer vers le répertoire sock
cd /var/run
# Tack backup - sock
sudo cp -rp ./mysqld ./mysqld.bak
# Arrêter le serveur
sudo service mysql stop
# Restaurer la chaussette
sudo mv ./mysqld.bak ./mysqld
# Démarrer MySQL en mode non sécurisé
sudo mysqld_safe --skip-grant-tables &
Étape 3 - Connectez-vous à MySQL
Ouvrez maintenant un autre terminal ou connectez-vous au serveur via un autre shell pour connecter le client.
# Se connecter directement
mysql
# Se connecter en tant que racine
mysql -uroot
# OU
mysql -u root
Étape 4 - Modifier le mot de passe
Dans cette étape, modifiez le mot de passe root à l'aide des commandes comme indiqué ci-dessous. Vous pouvez également vous référer à la section Mettre à jour le mot de passe de ce tutoriel pour utiliser d'autres commandes pour changer le mot de passe.
# Changer le mot de passe
# MySQL - 5.7, 8
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
# OR
ALTER USER 'root'@'localhost' IDENTIFIÉ AVEC mysql_native_password BY '';
# MySQL - 8
ALTER USER 'root'@'localhost' IDENTIFIÉ AVEC caching_sha2_password BY '' ;
# Vider
PRIVILÈGES DE FLUSH ;
# Déconnecter
quitter ;
Étape 5 - Arrêter et démarrer le serveur MySQL
Maintenant, arrêtez et démarrez le serveur MySQL en utilisant les commandes habituelles comme indiqué ci-dessous.
# Utiliser init
sudo /etc/init.d/mysqld stop
sudo /etc/init.d/mysqld start
# OU
sudo /etc/init. d/mysql stop
sudo /etc/init.d/mysql start
# Utilisation du service
sudo service mysql stop
sudo service mysql start
# Utilisation de systemd
sudo systemctl stop mysqld.service
sudo systemctl start mysqld.service
# OU
sudo systemctl stop mysql
sudo systemctl start mysql
Terminez les processus existants si nécessaire. Utilisez uniquement si les commandes ci-dessus ne fonctionnent pas pour arrêter et démarrer le serveur.
# Trouver les processus
ps aux | grep mysqld
ps aux | grep mysql
# Tue les processus
sudo killall mysqld
sudo killall mysql
Étape 6 - Tester le mot de passe
Enfin, testez le nouveau mot de passe à l'aide de la commande comme indiqué ci-dessous.
# Tester le nouveau mot de passe
mysql -u root -p
Résumé
C'est ainsi que nous pouvons réinitialiser ou modifier le mot de passe de l'utilisateur root ou de tout autre utilisateur au cas où nous aurions oublié le mot de passe.