如何在MySQL中显示用户的特权?


69

我知道我可以通过以下简单方式设置用户权限:

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

但是,我如何看到现有特权?

我需要查看类似于赠款中使用的数据。换句话说,我想知道给定的用户可以从给定的主机对给定的数据库的给定表进行访问。

我怎么才能得到它?

Answers:



51

下面是MySQL文档SHOW GRANTS

SHOW GRANTS [FOR user]

该语句列出了必须发出的GRANT语句,以复制授予MySQL用户帐户的特权。该帐户使用与GRANT语句相同的格式命名。例如,“ jeffrey” @“ localhost”。如果仅指定帐户名的用户名部分,则使用主机名部分“%”。有关指定帐户名的更多信息,请参见第12.5.1.3节“ GRANT语法”。

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

要列出授予您用于连接服务器的帐户的特权,可以使用以下任何语句:

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

从MySQL 5.0.24开始,如果在DEFINER上下文中使用SHOW GRANTS FOR CURRENT_USER(或任何等效语法),例如在用SQL SECURITY DEFINER定义的存储过程中),则显示的授权是定义程序的授权。不是调用者。

SHOW GRANTS仅显示显式授予命名帐户的特权。该帐户可能还可以使用其他特权,但是不会显示。例如,如果存在一个匿名帐户,则该命名帐户可能能够使用其特权,但是SHOW GRANTS不会显示它们。

SHOW GRANTS需要mysql数据库的SELECT特权。


SHOW GRANTS requires the SELECT privilege for the mysql system database, except to display privileges and roles for the current user.
Sandip Bhattacharya
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.