Introduction
La gestion des utilisateurs et des privilĂšges est un Ă©lĂ©ment central de lâadministration MySQL. Une mauvaise configuration peut entraĂźner des failles de sĂ©curitĂ© ou des erreurs dâaccĂšs en production.
Cette cheatsheet regroupe les commandes essentielles pour gérer les utilisateurs MySQL, leurs droits, les mots de passe et les vérifications associées.
Gestion des utilisateurs
Créer un utilisateur
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
Exemples de host :
localhostâ accĂšs local uniquement%â accĂšs depuis nâimporte quelle machine192.168.1.10â accĂšs restreint
Modifier le mot de passe
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
Supprimer un utilisateur
DROP USER 'username'@'host';
Gestion des privilĂšges
Donner tous les droits sur une base
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
Donner des droits spécifiques
GRANT SELECT, INSERT ON database_name.* TO 'username'@'host';
Principe de moindre privilÚge recommandé
Révoquer des droits
REVOKE ALL PRIVILEGES ON database_name.* FROM 'username'@'host';
Appliquer les changements
FLUSH PRIVILEGES;
Nécessaire aprÚs modifications manuelles (tables systÚme)
Vérifier les permissions
Afficher les privilĂšges dâun utilisateur
SHOW GRANTS FOR 'username'@'host';
Lister les utilisateurs
SELECT user, host FROM mysql.user;
Vérifier les droits sur une base
SELECT User, Host, Db, Select_priv, Insert_priv, Update_priv, Delete_priv
FROM mysql.db
WHERE Db = 'database_name';
Vérifier les droits au niveau table
SELECT * FROM mysql.tables_priv WHERE Db = 'database_name';
Authentification et mots de passe
Voir les hashes de mots de passe
SELECT user, host, authentication_string FROM mysql.user;
Les mots de passe ne sont jamais accessibles en clair
Réinitialiser un mot de passe
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
Sauvegarde et restauration
Sauvegarder une base de données
mysqldump -u root -p database_name > backup.sql
Restaurer une base
mysql -u root -p database_name < backup.sql
Gestion des accĂšs par hĂŽte
Modifier le host dâun utilisateur
UPDATE mysql.user
SET Host = 'host2'
WHERE Host = 'host1' AND User = 'username';
FLUSH PRIVILEGES;
Dupliquer un utilisateur pour un autre host
INSERT INTO mysql.user (Host, User, authentication_string, plugin)
SELECT 'host2', User, authentication_string, plugin
FROM mysql.user
WHERE Host = 'host1';
FLUSH PRIVILEGES;
Commandes utiles en diagnostic
VĂ©rifier lâexistence dâun utilisateur
SELECT User, Host FROM mysql.user WHERE User = 'username';
Version de MySQL
SELECT VERSION();
Utilisateur courant
SELECT USER();
Cas dâerreur courant : âAccess deniedâ
En cas dâerreur dâaccĂšs :
- VĂ©rifier que lâutilisateur existe
- Vérifier le host autorisé
- Vérifier les privilÚges
- RecrĂ©er lâutilisateur si nĂ©cessaire
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
Bonnes pratiques de sécurité
- Ne jamais utiliser
%en production (sauf cas maßtrisé) - Appliquer le principe du moindre privilÚge
- Utiliser un gestionnaire de secrets (Vault, env sĂ©curisĂ©sâŠ)
- Sauvegarder les tables systĂšme avant modification (
mysql.user) - Auditer réguliÚrement les accÚs
Aller plus loin
Supprimer les utilisateurs anonymes
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
Restreindre les connexions root
UPDATE mysql.user SET Host='localhost' WHERE User='root';
FLUSH PRIVILEGES;
Lister les connexions actives
SHOW PROCESSLIST;
Conclusion
La maĂźtrise des commandes MySQL liĂ©es aux utilisateurs et aux privilĂšges est essentielle pour garantir la sĂ©curitĂ© et la stabilitĂ© dâune base de donnĂ©es.
Cette cheatsheet couvre les opérations les plus courantes : création, gestion des droits, audit et dépannage.
