- 1 1. Introduction
- 2 2. Comment définir et modifier les mots de passe MySQL
- 3 3. Comment réinitialiser un mot de passe MySQL si vous l’avez oublié
- 4 4. Résolution des erreurs courantes lors du changement de mots de passe MySQL
- 5 5. Renforcement de la sécurité MySQL et paramètres recommandés
- 6 6. Questions fréquemment posées (FAQ)
- 6.1 Q1 : Quelle est la façon la plus simple de récupérer un mot de passe root MySQL oublié ?
- 6.2 Q2 : Que faire si j’obtiens « ERROR 1045 (28000) : Access denied for user » ?
- 6.3 Q3 : Y a-t-il une différence entre MySQL 5.6 et 8.0 lors du changement de mots de passe ?
- 6.4 Q4 : Comment renforcer la politique de mot de passe MySQL ?
- 6.5 Q5 : Est-il sûr de désactiver l’utilisateur root de MySQL ?
- 6.6 Q6 : Existe-t-il des outils pour gérer les mots de passe MySQL de manière sécurisée ?
- 6.7 Q7 : Puis-je consigner les changements de mot de passe MySQL ?
- 7 7. Conclusion
1. Introduction
L’importance de la gestion des mots de passe MySQL
MySQL est un système de gestion de bases de données largement utilisé dans le monde. Cependant, la base de sa gestion de sécurité repose sur une configuration et une administration correctes des mots de passe. Sans une gestion appropriée des mots de passe, vous pouvez rencontrer les risques suivants :
- Accès non autorisé : Les mots de passe faibles rendent votre système vulnérable aux attaques externes.
- Violation de données : Des informations sensibles peuvent être exposées par des utilisateurs malveillants.
- Altération du système : La suppression ou la modification de données peut affecter le fonctionnement normal des sites web et des applications.
Pour éviter ces risques, il est essentiel de définir des mots de passe forts et de les changer régulièrement. Dans cet article, nous expliquerons en détail les aspects suivants de la gestion des mots de passe MySQL :
✅ Comment définir des mots de passe pour les nouveaux utilisateurs
✅ Comment changer les mots de passe des utilisateurs existants
✅ Comment réinitialiser un mot de passe oublié
✅ Comment vérifier la robustesse d’un mot de passe
✅ Erreurs courantes et comment les résoudre
✅ Paramètres recommandés pour renforcer la sécurité
En lisant cet article, vous acquerrez les connaissances et compétences nécessaires pour gérer correctement les mots de passe MySQL, alors assurez‑vous de le lire jusqu’à la fin.
2. Comment définir et modifier les mots de passe MySQL
Créer un nouvel utilisateur et définir un mot de passe
Cette section explique comment créer un nouvel utilisateur et définir un mot de passe dans MySQL.
1. Se connecter à MySQL
Tout d’abord, connectez‑vous en tant qu’administrateur MySQL (par exemple l’utilisateur root).
mysql -u root -p
-u root est une option pour se connecter en tant qu’utilisateur root, et -p affiche une invite de mot de passe.
2. Créer un nouvel utilisateur et définir un mot de passe
Utilisez la commande CREATE USER pour créer un nouvel utilisateur et définir un mot de passe.
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'secure_password';
'newuser'@'localhost': Spécifie le nom d’utilisateur (newuser) et l’hôte (localhost) depuis lequel l’utilisateur peut se connecter.'secure_password': Le mot de passe à définir (assurez‑vous d’utiliser un mot de passe fort).
3. Accorder les privilèges appropriés
Vous devez accorder des privilèges de base de données au nouvel utilisateur. Par exemple, pour accorder tous les privilèges :
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;
ALL PRIVILEGES: Accorde tous les privilèges.*.*: Permet l’accès à toutes les bases de données et tables.WITH GRANT OPTION: Permet à l’utilisateur d’accorder des privilèges à d’autres utilisateurs.
4. Appliquer les privilèges
Exécutez FLUSH PRIVILEGES pour appliquer les modifications.
FLUSH PRIVILEGES;
Vous avez maintenant créé avec succès un nouvel utilisateur avec un mot de passe sécurisé et les privilèges appropriés.
Modifier le mot de passe d’un utilisateur existant
Cette section explique comment modifier le mot de passe d’un utilisateur MySQL existant.
1. Se connecter à MySQL
Connectez‑vous avec des privilèges administratifs.
mysql -u root -p
2. Modifier le mot de passe avec ALTER USER (MySQL 5.7 et ultérieur)
ALTER USER 'existinguser'@'localhost' IDENTIFIED BY 'new_secure_password';
'existinguser'@'localhost': Le nom d’utilisateur et l’hôte à modifier.'new_secure_password': Le nouveau mot de passe.
3. Modifier le mot de passe avec SET PASSWORD (MySQL 5.6 et antérieur)
SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('new_secure_password');
Utiliser la fonction PASSWORD() garantit que le mot de passe est correctement chiffré avant d’être stocké.
4. Appliquer les modifications
N’oubliez pas d’exécuter FLUSH PRIVILEGES;.
FLUSH PRIVILEGES;
Vous pouvez maintenant modifier en toute sécurité le mot de passe d’un utilisateur existant en utilisant cette méthode. 
3. Comment réinitialiser un mot de passe MySQL si vous l’avez oublié
Même si vous avez oublié votre mot de passe MySQL, vous pouvez le réinitialiser en suivant la procédure appropriée. Cette section explique comment réinitialiser les mots de passe sur Windows, Linux et Mac.
Comment réinitialiser un mot de passe MySQL sous Windows
Sur Windows, une méthode courante pour réinitialiser le mot de passe root de MySQL consiste à utiliser l’option skip-grant-tables.
1. Arrêter le service MySQL
Tout d’abord, arrêtez le service MySQL en cours d’exécution sous Windows.
net stop mysql
Alternativement, vous pouvez ouvrir services.msc et arrêter manuellement le service MySQL.
2. Démarrer MySQL avec mysqld --skip-grant-tables
mysqld --skip-grant-tables --skip-networking
3. Se connecter à MySQL
mysql -u root
4. Définir un nouveau mot de passe
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
Ou, pour MySQL 5.6 et antérieur, utilisez SET PASSWORD.
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_secure_password');
5. Redémarrer MySQL
net stop mysql
net start mysql
Comment réinitialiser un mot de passe MySQL sous Linux / Mac
1. Arrêter le service MySQL
sudo systemctl stop mysql
2. Démarrer MySQL en mode --skip-grant-tables
sudo mysqld_safe --skip-grant-tables --skip-networking &
3. Se connecter à MySQL
mysql -u root
4. Réinitialiser le mot de passe
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
5. Redémarrer MySQL
sudo systemctl start mysql
Modifications des méthodes de réinitialisation du mot de passe dans MySQL 8.0 et versions ultérieures
Dans MySQL 8.0, le mécanisme de gestion des mots de passe a changé, vous devez donc prendre en compte le point suivant.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password';
Cela vous permet de continuer à utiliser la méthode d’authentification par mot de passe héritée si nécessaire.
4. Résolution des erreurs courantes lors du changement de mots de passe MySQL
Vous pouvez rencontrer des erreurs en essayant de changer les mots de passe MySQL. Cette section explique les causes et les solutions des erreurs courantes.
ERREUR 1045 (28000) : Accès refusé pour l’utilisateur
Cause de l’erreur
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Cette erreur se produit lors de la connexion à MySQL si le mot de passe est incorrect ou les privilèges sont insuffisants.
Solution
- Vérifiez à nouveau le mot de passe que vous avez saisi
- Spécifiez le nom d’utilisateur et l’hôte corrects
SELECT User, Host FROM mysql.user;
- Réinitialisez le mot de passe (voir la section de réinitialisation du mot de passe)
- Configurez correctement les privilèges
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
ERREUR 1133 : Impossible de trouver une ligne correspondante dans la table des utilisateurs
Cause de l’erreur
ERROR 1133: Can't find any matching row in the user table
Cette erreur se produit lorsque l’utilisateur spécifié n’existe pas.
Solution
- Vérifiez la liste actuelle des utilisateurs
SELECT User, Host FROM mysql.user;
- Recréez l’utilisateur
CREATE USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
- Spécifiez l’hôte correct (utilisez
localhostou%de manière appropriée)
ERREUR 1820 : Vous devez réinitialiser votre mot de passe
Cause de l’erreur
ERROR 1820: You must reset your password using ALTER USER statement before executing this statement.
Cette erreur se produit lorsque le mot de passe a expiré.
Solution
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
Pour désactiver l’expiration du mot de passe :
SET GLOBAL default_password_lifetime = 0;
ERREUR 2059 : Le plugin caching_sha2_password n’a pas pu être chargé
Cause de l’erreur
ERROR 2059: Plugin caching_sha2_password could not be loaded
Dans MySQL 8.0 et versions ultérieures, le plugin d’authentification par défaut est passé à caching_sha2_password, ce qui peut provoquer des erreurs avec certains clients.
Solution
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password';
Ou ajoutez ce qui suit au fichier de configuration MySQL (my.cnf ou my.ini) et redémarrez MySQL.
[mysqld]
default_authentication_plugin=mysql_native_password
Redémarrer MySQL:
sudo systemctl restart mysql
5. Renforcement de la sécurité MySQL et paramètres recommandés
Renforcer la sécurité de MySQL est essentiel pour améliorer la sûreté de la base de données et prévenir les accès non autorisés et les violations de données. Cette section présente les configurations recommandées pour renforcer la sécurité de MySQL.
Définir des mots de passe forts
Utiliser des mots de passe faibles dans MySQL rend votre système une cible facile pour les attaquants. Configurez les paramètres pour augmenter la robustesse des mots de passe.
Activer une politique de mot de passe
Vérifiez la politique de mot de passe actuelle:
SHOW VARIABLES LIKE 'validate_password%';
Configurez une politique de mot de passe forte:
SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.mixed_case_count = 1;
SET GLOBAL validate_password.number_count = 1;
SET GLOBAL validate_password.special_char_count = 1;
Définir l’expiration du mot de passe
Changer régulièrement les mots de passe renforce la sécurité.
Vérifiez le paramètre d’expiration du mot de passe actuel:
SHOW VARIABLES LIKE 'default_password_lifetime';
Définissez l’expiration du mot de passe à 90 jours:
SET GLOBAL default_password_lifetime = 90;
Renforcer la sécurité de l’utilisateur root
Restreindre l’accès distant pour l’utilisateur root
Vérifiez la configuration d’hôte actuelle pour l’utilisateur root:
SELECT User, Host FROM mysql.user WHERE User = 'root';
Désactivez l’accès distant pour root:
UPDATE mysql.user SET Host='localhost' WHERE User='root';
FLUSH PRIVILEGES;
Créer un compte administrateur alternatif et désactiver root
CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;
RENAME USER 'root'@'localhost' TO 'disabled_root'@'localhost';
FLUSH PRIVILEGES;
Restreindre les connexions distantes MySQL
Modifiez le fichier de configuration (my.cnf ou my.ini):
[mysqld]
bind-address = 127.0.0.1
Configurez le pare-feu sous Linux:
sudo ufw deny 3306
Autorisez uniquement une adresse IP spécifique:
sudo ufw allow from 192.168.1.100 to any port 3306
Supprimer les comptes et privilèges inutiles
Vérifiez la liste actuelle des utilisateurs:
SELECT User, Host FROM mysql.user;
Supprimez les utilisateurs anonymes:
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
Supprimez la base de données de test inutile:
DROP DATABASE test;
FLUSH PRIVILEGES;
Activer la journalisation MySQL
Activez le journal d’erreurs:
[mysqld]
log_error = /var/log/mysql/error.log
Activez le journal général des requêtes:
general_log = 1
general_log_file = /var/log/mysql/general.log
Redémarrer MySQL:
sudo systemctl restart mysql
6. Questions fréquemment posées (FAQ)
Cette section résume les questions courantes et leurs solutions liées à la configuration, la modification et la réinitialisation du mot de passe MySQL.
Q1 : Quelle est la façon la plus simple de récupérer un mot de passe root MySQL oublié ?
Solution
- Arrêter MySQL
sudo systemctl stop mysql
- Démarrer MySQL en mode
skip-grant-tablessudo mysqld_safe --skip-grant-tables --skip-networking &
- Se connecter à MySQL
mysql -u root
- Définir un nouveau mot de passe
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
- Redémarrer MySQL
sudo systemctl restart mysql
Q2 : Que faire si j’obtiens « ERROR 1045 (28000) : Access denied for user » ?
Solution
- Vérifier le mot de passe que vous avez saisi
mysql -u root -p
- Confirmer que l’utilisateur existe
SELECT User, Host FROM mysql.user;
Réinitialiser le mot de passe (voir les instructions précédentes)
Accorder les privilèges appropriés
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
Q3 : Y a-t-il une différence entre MySQL 5.6 et 8.0 lors du changement de mots de passe ?
Modifier le mot de passe dans MySQL 5.6 et antérieur
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_secure_password');
Modifier le mot de passe dans MySQL 8.0 et versions ultérieures
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_secure_password';
Dans MySQL 8.0, puisque caching_sha2_password est la méthode d’authentification par défaut, les clients plus anciens peuvent nécessiter l’ajustement suivant :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_secure_password';
Q4 : Comment renforcer la politique de mot de passe MySQL ?
Configurer une politique de mot de passe forte
SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;
SET GLOBAL validate_password.mixed_case_count = 1;
SET GLOBAL validate_password.number_count = 1;
SET GLOBAL validate_password.special_char_count = 1;
Q5 : Est-il sûr de désactiver l’utilisateur root de MySQL ?
Solution
- Créer un compte administrateur
CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'secure_password'; GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;
- Désactiver le compte root
RENAME USER 'root'@'localhost' TO 'disabled_root'@'localhost'; FLUSH PRIVILEGES;
Q6 : Existe-t-il des outils pour gérer les mots de passe MySQL de manière sécurisée ?
Solution
mysql_config_editor(Outil officiel MySQL)mysql_config_editor set --login-path=local --host=localhost --user=root --password
Cela vous permet de vous connecter sans saisir explicitement le mot de passe.
mysql --login-path=local
- Gestionnaires de mots de passe (Bitwarden, 1Password, KeePass, etc.)
- Utile pour générer et stocker en toute sécurité des mots de passe forts.
Q7 : Puis-je consigner les changements de mot de passe MySQL ?
Solution
Activer le journal général des requêtes
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/general.log
Redémarrer MySQL :
sudo systemctl restart mysql
7. Conclusion
Cet article a expliqué tout, des bases aux techniques avancées, de la gestion des mots de passe MySQL. Vous trouverez ci‑dessous un résumé des points clés ainsi qu’une liste de contrôle pour gérer correctement les mots de passe MySQL.
Points clés de la gestion des mots de passe MySQL
✅ Une configuration et une gestion appropriées des mots de passe sont la base de la sécurité
✅ Définir des mots de passe forts lors de la création de nouveaux utilisateurs
✅ Changer régulièrement les mots de passe et configurer des politiques d’expiration
✅ Comprendre les procédures de récupération en cas d’oubli de mot de passe
✅ Diagnostiquer correctement les erreurs lors des changements de mot de passe
✅ Optimiser l’accès distant et la gestion de l’utilisateur root pour renforcer la sécurité
✅ Activer la journalisation pour suivre les activités liées aux mots de passe
Liste de contrôle de la gestion des mots de passe MySQL
| Checklist Item | Status |
|---|---|
| Have you set a strong root password for MySQL? | ✅ / ❌ |
Do you use the CREATE USER command when creating new users? | ✅ / ❌ |
Have you enabled the validate_password plugin and configured a strong password policy? | ✅ / ❌ |
| Do you regularly change passwords and set expiration policies? | ✅ / ❌ |
Have you disabled remote access for the root user? | ✅ / ❌ |
| Have you removed unnecessary or anonymous accounts? | ✅ / ❌ |
Do you understand how to reset passwords using skip-grant-tables mode? | ✅ / ❌ |
Do you understand how to resolve ERROR 1045 and ERROR 1820 during password changes? | ✅ / ❌ |
Have you enabled MySQL logs (general_log and error_log)? | ✅ / ❌ |
Actions recommandées à entreprendre après la lecture de cet article
- Révisez votre politique de mot de passe actuelle et renforcez‑la si nécessaire
SHOW VARIABLES LIKE 'validate_password%'; SET GLOBAL validate_password.policy = STRONG; SET GLOBAL validate_password.length = 12;
- Supprimez les comptes inutiles
DELETE FROM mysql.user WHERE User=''; DROP DATABASE test; FLUSH PRIVILEGES;
- Restreignez l’accès distant pour l’utilisateur root
UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;
- Configurez une expiration régulière des mots de passe
SET GLOBAL default_password_lifetime = 90;
- Activez la journalisation pour la surveillance
[mysqld] log_error = /var/log/mysql/error.log general_log = 1 general_log_file = /var/log/mysql/general.log
Redémarrer MySQL:
sudo systemctl restart mysql
Articles associés pour approfondir
📌 Guide détaillé de la gestion des privilèges utilisateur MySQL
📌 Procédures de sauvegarde et de restauration MySQL
📌 Comment optimiser les bases de données MySQL
📌 Configurer MySQL avec une authentification externe (LDAP ou OAuth)
Réflexions finales
La gestion des mots de passe MySQL est une connaissance essentielle pour protéger la sécurité des bases de données.
Appliquez les pratiques présentées dans ce guide et assurez une gestion sécurisée des bases de données ! 💪


