Comment changer le mot de passe MySQL pour l'utilisateur root et les utilisateurs réguliers
Mot de passe root MySQL oublié ? Ne vous inquiétez pas, cela arrive même aux administrateurs expérimentés. Dans cet article, nous allons vous expliquer comment réinitialiser le mot de passe root MySQL pour différentes versions : MySQL 5.7 et MySQL 8.0+. De plus, nous aborderons la réinitialisation du mot de passe d'un utilisateur de base de données régulier.
Pour MariaDB, veuillez consulter notre guide séparé.
Root est l'administrateur principal de la base de données. Il/Elle a un accès complet à toutes les données et à tous les paramètres. Si vous perdez ce mot de passe, la modification de certains paramètres et l'exécution de certaines commandes ne seront plus possibles.
Toutes les opérations seront effectuées via la ligne de commande via SSH. Vous trouverez des instructions plus détaillées sur la connexion à votre serveur via ce protocole dans cet article.
Avant de continuer, vérifiez le contenu du fichier /root/.my.cnf. Il contient souvent le mot de passe root actuel pour accéder à MySQL.
Vous pouvez tester la connexion en utilisant la commande :
mysql -u root -p
Entrez ensuite le mot de passe du fichier .my.cnf.
Si le mot de passe ne fonctionne pas, suivez les instructions ci-dessous.
Comment réinitialiser le mot de passe root MySQL
Étape 1 : Arrêter MySQL
Pour réinitialiser le mot de passe, vous devez d'abord arrêter MySQL. Entrez la commande suivante :
- Pour Debian et Ubuntu :
systemctl stop mysql
- Pour CentOS/RockyLinux/AlmaLinux :
systemctl stop mysqld
Étape 2 : Redémarrer le serveur en mode sans échec
- Pour Debian et Ubuntu :
Assurez-vous que le répertoire à partir duquel MySQL sera exécuté existe et a le propriétaire approprié :
mkdir -p /var/run/mysqld/ && chown -R mysql: /var/run/mysqld/
Démarrez le serveur MySQL sans contrôle d'accès :
mysqld_safe --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &
Si MySQL démarre correctement, vous verrez un message similaire à :
2024-11-28T23:50:19.298141Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Pour continuer à travailler dans la ligne de commande, appuyez sur « Ctrl + C ».
- Pour CentOS/RockyLinux/AlmaLinux :
sudo -u mysql mysqld --skip-grant-tables --socket=/var/run/mysqld/mysqld.sock &
Étape 3 : Se connecter à MySQL
mysql --socket=/var/run/mysqld/mysqld.sock
Étape 4 : Réinitialiser le mot de passe
- Pour MySQL 5.7, exécutez les commandes suivantes séquentiellement :
FLUSH PRIVILEGES;
Pour un utilisateur local :
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NouveauMotDePasse';
Pour un utilisateur réseau (s'il existe) :
ALTER USER 'root'@'%' IDENTIFIED BY 'NouveauMotDePasse';
Puis :
FLUSH PRIVILEGES;
Remplacez NouveauMotDePasse par votre nouveau mot de passe souhaité.
« user »@« localhost » fait référence à un utilisateur local se connectant via socket ou localhost. « user »@« % » fait référence à un utilisateur réseau ayant accès depuis n'importe quelle adresse IP.
Vous pouvez définir les mêmes mots de passe ou des mots de passe différents pour ces utilisateurs. Si l'utilisateur réseau n'existe pas, la commande @'%' entraînera une erreur.
Quittez MySQL en utilisant la commande exit ou en appuyant sur « Ctrl + D ».
- Pour MySQL 8.0+, exécutez les commandes suivantes :
FLUSH PRIVILEGES;
Pour un utilisateur local :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NouveauMotDePasse';
Pour un utilisateur réseau (s'il existe) :
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'NouveauMotDePasse';
Puis :
FLUSH PRIVILEGES;
Remplacez NouveauMotDePasse par votre nouveau mot de passe souhaité.
Quittez MySQL en utilisant la commande exit ou en appuyant sur « Ctrl + D ».
Étape 5 : Redémarrer MySQL
Arrêtez MySQL :
mysqladmin shutdown --socket=/var/run/mysqld/mysqld.sock -p
Ensuite, entrez le mot de passe root précédemment défini.
Démarrez MySQL en mode normal :
- Pour Debian et Ubuntu :
systemctl start mysql
- Pour CentOS/RockyLinux/AlmaLinux :
systemctl start mysqld
Comment réinitialiser le mot de passe des utilisateurs réguliers
Si vous avez oublié le mot de passe d'un utilisateur autre que root, l'approche est similaire :
- Connectez-vous au serveur MySQL en tant que root :
mysql -u root -p
Entrez votre mot de passe root MySQL.
- Exécutez la commande pour changer le mot de passe :
- MySQL 5.7 :
Pour un utilisateur local :
ALTER USER 'nom d'utilisateur'@'localhost' IDENTIFIED BY 'NouveauMotDePasseUtilisateur';
Pour un utilisateur réseau (s'il existe) :
ALTER USER 'nom d'utilisateur'@'%' IDENTIFIED BY 'NouveauMotDePasseUtilisateur';
Puis :
FLUSH PRIVILEGES;
Remplacez nom d'utilisateur par le nom d'utilisateur existant et NouveauMotDePasseUtilisateur par le nouveau mot de passe souhaité.
Quittez MySQL en utilisant la commande exit ou en appuyant sur « Ctrl + D ».
- MySQL 8.0+ :
Pour un utilisateur local :
ALTER USER 'nom d'utilisateur'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NouveauMotDePasse';
Pour un utilisateur réseau (s'il existe) :
ALTER USER 'nom d'utilisateur'@'%' IDENTIFIED WITH mysql_native_password BY 'NouveauMotDePasse';
Remplacez nom d'utilisateur par le nom d'utilisateur existant et NouveauMotDePasse par le nouveau mot de passe souhaité.
Terminez en quittant MySQL avec la commande exit ou la combinaison de touches « Ctrl + D ».
Si nécessaire, vous pouvez lister tous les utilisateurs avec la requête suivante :
SELECT User, Host FROM mysql.user;
Comment se connecter à MySQL localement sans saisir de mot de passe
Pour éviter de saisir manuellement le mot de passe à chaque connexion à MySQL depuis la ligne de commande sur votre serveur, vous pouvez l'enregistrer dans le fichier /root/.my.cnf. Ouvrez le fichier dans un éditeur de texte :
nano /root/.my.cnf
Ajoutez les lignes suivantes :
[client]
user = root
password = VotreMotDePasseRoot
Remplacez VotreMotDePasseRoot par votre mot de passe root actuel.
Enregistrez ensuite le fichier à l'aide de la combinaison de touches « Ctrl + O » et quittez l'éditeur de texte avec « Ctrl + X ».
Par mesure de sécurité, définissez des autorisations plus strictes sur le fichier .my.cnf :
chmod 600 /root/.my.cnf
Après cette configuration, vous pouvez vous connecter en exécutant simplement la commande :
mysql -u root