Comment puis-je afficher les privilèges de l'utilisateur dans MySQL?

69

Je sais que je peux définir les privilèges de l'utilisateur de la manière simple suivante:

grant all on [database name].[table name] to [user name]@[host name];

Mais comment puis-je voir les privilèges existants?

J'ai besoin de voir des données similaires à celles utilisées dans Grant. En d'autres termes, je veux savoir qu'un utilisateur donné a un accès donné à une table donnée d'une base de données donnée à partir d'un hôte donné.

Comment puis-je l'avoir?

romain
la source

Réponses:

75

La commande SHOW GRANTS [FOR user]est ce que vous recherchez. Voir ici pour plus de détails.

John Gardeniers
la source
51

Voici la documentation MySQL pour SHOW GRANTS:

SHOW GRANTS [FOR user]

Cette instruction répertorie la ou les instructions GRANT devant être émises pour dupliquer les privilèges accordés à un compte utilisateur MySQL. Le compte est nommé dans le même format que pour l'instruction GRANT; par exemple, 'jeffrey' @ 'localhost'. Si vous spécifiez uniquement la partie nom d'utilisateur du nom de compte, une partie du nom d'hôte de '%' est utilisée. Pour plus d'informations sur la spécification des noms de compte, reportez-vous à la Section 12.5.1.3, «Syntaxe GRANT».

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+

Pour répertorier les privilèges accordés au compte que vous utilisez pour vous connecter au serveur, vous pouvez utiliser l'une des instructions suivantes:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();

Depuis MySQL 5.0.24, si SHOW GRANTS FOR CURRENT_USER (ou l’une des syntaxes équivalentes) est utilisé dans le contexte DEFINER, comme dans une procédure stockée définie avec SQL SECURITY DEFINER), les subventions affichées sont celles du définisseur et pas l'invocateur.

SHOW GRANTS affiche uniquement les privilèges accordés explicitement au compte nommé. D'autres privilèges peuvent être disponibles pour le compte, mais ils ne sont pas affichés. Par exemple, si un compte anonyme existe, le compte nommé pourra peut-être utiliser ses privilèges, mais SHOW GRANTS ne les affichera pas.

SHOW GRANTS requiert le privilège SELECT pour la base de données mysql.

radieux
la source
SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya