đŸ—„ïž MySQL Cheatsheet : gestion des utilisateurs, droits et sĂ©curitĂ©

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 machine
  • 192.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 :

  1. VĂ©rifier que l’utilisateur existe
  2. Vérifier le host autorisé
  3. Vérifier les privilÚges
  4. 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.