web-dev-qa-db-fra.com

Comment puis-je afficher les privilèges des utilisateurs 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 la subvention. 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?

73
Roman

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

78
John Gardeniers

Voici la documentation MySQL pour SHOW GRANTS:

SHOW GRANTS [FOR user]

Cette instruction répertorie la ou les instructions GRANT qui doivent être émises pour dupliquer les privilèges accordés à un compte d'utilisateur MySQL. Le compte est nommé en utilisant le même format que pour l'instruction GRANT; par exemple, "jeffrey" @ "localhost". Si vous spécifiez uniquement la partie du 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 allocations 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, s'il existe un compte anonyme, le compte nommé peut être en mesure d'utiliser ses privilèges, mais SHOW GRANTS ne les affichera pas.

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

55
radious