Comment lister les utilisateurs MySQL : interroger mysql.user et vérifier les privilèges

1. Vue d’ensemble des utilisateurs MySQL

La gestion des utilisateurs MySQL est un aspect crucial de la sécurité et du fonctionnement des bases de données. Une bonne gestion des utilisateurs aide à prévenir les accès non autorisés et améliore l’efficacité opérationnelle en attribuant les privilèges appropriés. Dans cet article, nous expliquerons en détail comment les informations des utilisateurs MySQL sont stockées et comment afficher une liste d’utilisateurs.

1.1 Pourquoi la gestion des utilisateurs MySQL est importante

Comme les bases de données contiennent des informations sensibles, une gestion adéquate des utilisateurs est essentielle. En configurant les privilèges d’accès de façon détaillée pour chaque utilisateur, vous pouvez renforcer la sécurité et maintenir l’intégrité des données.

2. Où MySQL stocke les informations des utilisateurs

Les informations des utilisateurs MySQL sont stockées dans la table user de la base de données mysql. Cette table contient divers détails liés aux utilisateurs tels que les noms d’utilisateur, les hôtes, les mots de passe (cryptés) et les plugins d’authentification.

2.1 Structure de la table mysql.user

La table mysql.user comporte de nombreuses colonnes, chacune stockant une information différente relative à un utilisateur. Elle comprend des colonnes telles que :

  • Host : Le nom d’hôte depuis lequel l’utilisateur est autorisé à se connecter
  • User : Le nom d’utilisateur
  • Password : Le mot de passe crypté
  • plugin : Le type de plugin d’authentification
  • D’autres paramètres liés à la sécurité

Pour accéder à cette table, vous avez besoin des privilèges root ou des privilèges SELECT sur mysql.user.

3. Comment obtenir une liste des utilisateurs MySQL

Pour récupérer une liste des utilisateurs MySQL, vous devez interroger la table mysql.user. Ci‑dessous, nous expliquerons tout, de la requête de base pour lister les utilisateurs à la façon d’afficher les mots de passe cryptés.

3.1 Requête de base pour lister les utilisateurs

Voici d’abord la requête de base pour récupérer une liste d’utilisateurs depuis la table mysql.user.

SELECT Host, User FROM mysql.user;

Lorsque vous exécutez cette requête, elle affiche la liste de tous les utilisateurs et leurs hôtes correspondants.

3.2 Affichage des mots de passe cryptés

Pour obtenir une liste incluant les mots de passe cryptés, utilisez la requête suivante.

SELECT Host, User, Password FROM mysql.user;

Cette requête affiche le nom d’hôte, le nom d’utilisateur et le mot de passe crypté. Cependant, comme le mot de passe est crypté, vous ne pouvez pas déterminer le mot de passe réel à partir de cette valeur.

4. Récupération d’autres informations sur les utilisateurs

Dans MySQL, vous pouvez récupérer des informations supplémentaires sur les utilisateurs. En particulier, il est utile de vérifier les privilèges des utilisateurs et d’identifier l’utilisateur actuellement connecté.

4.1 Vérification des privilèges des utilisateurs

Pour vérifier les privilèges attribués à chaque utilisateur, utilisez l’instruction SHOW GRANTS.

SHOW GRANTS FOR 'username'@'host';

Cette commande affiche tous les privilèges accordés à l’utilisateur spécifié. Gérer correctement les privilèges des utilisateurs contribue à renforcer la sécurité de la base de données.

4.2 Vérification de l’utilisateur actuellement connecté

Pour vérifier les informations concernant l’utilisateur actuellement connecté, utilisez les fonctions user() et current_user().

SELECT user(), current_user();

Cette requête renvoie le nom d’utilisateur spécifié lors de la connexion ainsi que le nom d’utilisateur réellement authentifié. Dans la plupart des cas, ils sont identiques, mais ils peuvent différer dans certaines situations, par exemple lors de l’utilisation d’utilisateurs anonymes.

5. Exemple pratique

Voici maintenant un exemple pratique montrant comment afficher une liste d’utilisateurs dans MySQL.

5.1 Étapes pour afficher la liste des utilisateurs

  1. Connectez‑vous à MySQL. Dans cet exemple, nous utiliserons l’utilisateur root. mysql -u root -p
  2. Exécutez la requête suivante pour afficher la liste des utilisateurs. SELECT Host, User FROM mysql.user;
  3. Si vous souhaitez afficher la liste incluant les mots de passe cryptés, utilisez la requête suivante. SELECT Host, User, Password FROM mysql.user;

5.2 Vérification des privilèges

Pour vérifier les privilèges d’un utilisateur spécifique, utilisez l’instruction SHOW GRANTS.

SHOW GRANTS FOR 'tanaka'@'localhost';

Cette commande affiche les privilèges accordés à l’utilisateur tanaka.

6. Bonnes pratiques pour la gestion des utilisateurs MySQL

Lors de la gestion des utilisateurs MySQL, il est important de suivre plusieurs bonnes pratiques.

6.1 Réviser régulièrement la liste des utilisateurs

Nous recommandons de vérifier régulièrement la table mysql.user afin de s’assurer qu’il n’y a pas d’utilisateurs inutiles et qu’aucun utilisateur ne possède de privilèges incorrects assignés.

6.2 Utiliser des mots de passe forts

Assurez-vous que chaque utilisateur possède un mot de passe fort et complexe. Cela réduit le risque d’accès non autorisé.

6.3 Accorder les privilèges minimum requis

Limitez les privilèges des utilisateurs au strict nécessaire et autorisez uniquement les opérations requises. Cela améliore la sécurité globale de la base de données.

7. Résumé

Dans cet article, nous avons expliqué en détail la gestion des utilisateurs MySQL. Comprendre où les informations des utilisateurs sont stockées et comment les répertorier est essentiel pour maintenir la sécurité de la base de données. De plus, savoir comment vérifier les privilèges des utilisateurs et les détails de connexion vous aide à gérer MySQL plus efficacement.