131 votes

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

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 qui sont utilisées dans les subventions. 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 depuis un hôte donné.

Comment puis-je l'obtenir ?

143voto

John Gardeniers Points 27097

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

83voto

2hamed Points 3073

Voici le Documentation MySQL para SHOW GRANTS :

SHOW GRANTS [FOR user]

Cette instruction liste la ou les instructions GRANT qui doivent être émises pour dupliquer les privilèges accordés à un compte utilisateur MySQL. Le compte est nommé en utilisant le même format que pour l'instruction GRANT ; par exemple, 'jeffrey'@'localhost'. Si vous ne spécifiez que la partie nom d'utilisateur du nom de compte, une partie nom d'hôte de '%' est utilisée. Pour plus d'informations sur la spécification des noms de compte, consultez 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();

À partir de MySQL 5.0.24, si SHOW GRANTS FOR CURRENT_USER (ou toute autre syntaxe équivalente) est utilisé dans un 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 non de 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é peut être en mesure d'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.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X