🧚 Écoute ! Beekeeper Studio est une interface graphique MySQL rapide, moderne et open source Télécharger
8 septembre 2024 Par Matthew Rathbone

Les privilèges MySQL déterminent les actions qu’un utilisateur peut effectuer dans une base de données. SHOW GRANTS te permet de passer en revue ces privilèges pour t’assurer que les utilisateurs ont les bons accès. Tu peux :

  • Voir tous les privilèges d’un utilisateur donné.
  • Auditer les utilisateurs pour des raisons de sécurité.
  • Modifier les privilèges en fonction des grants actuels.

Avant de continuer ta lecture, je voulais te parler de notre gestionnaire de base de données MySQL moderne et rapide, Beekeeper Studio. Son éditeur SQL propose l’autocomplétion pendant que tu tapes et garde un historique de toutes les requêtes que tu as exécutées, ce qui est pratique quand tu audites des permissions. Et il est gratuit pour MySQL, télécharge-le ici.

Syntaxe de base de SHOW GRANTS

SHOW GRANTS FOR 'username'@'host';
  • ‘username’ désigne l’utilisateur MySQL.
  • ‘host’ désigne le nom d’hôte ou l’adresse IP depuis laquelle l’utilisateur se connecte.

Afficher les grants d’un utilisateur donné

Imaginons que tu as un utilisateur ‘john’ qui se connecte depuis localhost. Pour voir ses permissions, utilise la requête suivante :

SHOW GRANTS FOR 'john'@'localhost';

Résultat attendu :

+---------------------------------------------------------+
| Grants for john@localhost                               |
+---------------------------------------------------------+
| GRANT USAGE ON *.* TO `john`@`localhost`                |
| GRANT SELECT, INSERT ON `mydb`.* TO `john`@`localhost`  |
+---------------------------------------------------------+

Dans ce résultat :

  • GRANT USAGE indique que l’utilisateur n’a aucun privilège global.
  • GRANT SELECT, INSERT ON mydb.* montre que john dispose des permissions SELECT et INSERT sur toutes les tables de la base de données ‘mydb’.

Afficher les grants de tous les utilisateurs (MySQL 5.7 et versions ultérieures)

Dans MySQL, il n’existe pas de commande unique pour afficher directement les grants de tous les utilisateurs. En revanche, tu peux générer la requête nécessaire à partir de la table mysql.user, puis utiliser SHOW GRANTS pour chaque utilisateur :

SELECT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';') 
FROM mysql.user;

Cette requête génère une liste d’instructions SHOW GRANTS pour chaque utilisateur du système. Voici un exemple de résultat :

+--------------------------------------------------+
| CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host |
+--------------------------------------------------+
| SHOW GRANTS FOR 'root'@'localhost';              |
| SHOW GRANTS FOR 'john'@'localhost';              |
| SHOW GRANTS FOR 'admin'@'192.168.1.10';          |
+--------------------------------------------------+

Tu peux ensuite exécuter la requête SHOW GRANTS pour voir les privilèges d’un utilisateur donné.

Afficher les grants de l’utilisateur actuel

Pour afficher les grants de l’utilisateur actuellement connecté à la base de données, tu peux utiliser la fonction CURRENT_USER() :

SHOW GRANTS FOR CURRENT_USER();

Résultat attendu :

+---------------------------------------------------------+
| Grants for current user                                 |
+---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost`       |
+---------------------------------------------------------+

Cette commande est particulièrement utile pour les utilisateurs qui ne sont pas sûrs de leurs propres permissions.

Interpréter le résultat

  • GRANT USAGE : indique que l’utilisateur n’a aucun privilège global, mais qu’il peut avoir des privilèges spécifiques sur certaines bases de données.
  • ALL PRIVILEGES : accorde tous les privilèges sur une base de données ou de manière globale, à l’exception de GRANT OPTION.
  • GRANT OPTION : permet à un utilisateur d’accorder des privilèges à d’autres.
    Grants spécifiques à une base de données : des permissions comme SELECT, INSERT, UPDATE et DELETE peuvent être accordées pour une base de données ou une table précise.

Comprendre les GRANTS MySQL

MySQL fournit l’instruction GRANT, qui permet aux administrateurs d’accorder des privilèges aux utilisateurs.

Il existe aussi l’instruction inverse REVOKE pour retirer des privilèges.

Mais avant de modifier les permissions, il faut savoir lesquelles sont actuellement en place – et c’est là qu’intervient la commande SHOW GRANTS.

La commande SHOW GRANTS affiche l’instruction GRANT à exécuter pour dupliquer les privilèges d’un utilisateur.

Cette commande est compatible avec les moteurs de base de données MySQL et MariaDB.

Conclusion

En résumé, la commande SHOW GRANTS de MySQL sert à afficher les privilèges des utilisateurs. C’est un outil important pour les administrateurs de bases de données qui veulent auditer et gérer les permissions des utilisateurs.

D’autres articles qui pourraient te plaire :

Beekeeper Studio est une interface graphique MySQL gratuite et open source

J’utilise Beekeeper Studio pour mon travail sur MySQL depuis peu, et c’est rapidement devenu l’un de mes outils de base de données préférés. L’interface est épurée, moderne et sans distraction, ce qui permet de se concentrer facilement sur ses requêtes sans le fouillis qu’on trouve dans d’autres outils. - Surendra Singh

Beekeeper Studio est un client MySQL rapide, intuitif et facile à utiliser. Il prend aussi en charge plein d’autres bases de données et fonctionne parfaitement sous Windows, Mac et Linux.

La version Linux de Beekeeper est 100% complète : rien de bâclé, aucun compromis sur les fonctionnalités.

Ce que les utilisateurs MySQL disent de Beekeeper Studio

Beekeeper Beekeeper Still a Newbie

J’ai choisi ce programme après des années à utiliser phpMyAdmin, et j’ai l’impression d’entrer dans un monde de bien meilleure qualité ; ici, j’ai vraiment senti qu’on se soucie sincèrement de l’utilisateur. Le concept lui-même, sa mise en œuvre, l’expérience au quotidien : je suis sincèrement reconnaissant envers Matthew pour tout cela.

Alex M

Outil fabuleux, l’IDE le plus pratique que j’ai trouvé à ce jour pour administrer des bases Postgres et MySql - ça marche, tout simplement, sans prise de tête :-)