13.7.5.21 SHOW GRANTS 语句
SHOW GRANTS [FOR user]

此语句以GRANT语句的形式显示分配给MySQL用户帐户的权限,必须执行GRANT语句才能复制权限分配。

注意

要显示MySQL帐户的非特权信息,请使用SHOW CREATE USER语句。 参见第 13.7.5.12 节“ SHOW CREATE USER 语句”。

SHOW GRANTS需要mysql系统数据库的SELECT权限,但显示当前用户的权限除外。

要为SHOW GRANTS命名帐户,请使用与GRANT语句相同的格式(例如,'jeffrey'@'localhost'):

mysql> SHOW GRANTS FOR 'jeffrey'@'localhost';
+------------------------------------------------------------------+
| Grants for jeffrey@localhost                                     |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `jeffrey`@`localhost`                      |
| GRANT SELECT, INSERT, UPDATE ON `db1`.* TO `jeffrey`@`localhost` |
+------------------------------------------------------------------+

如果省略主机部分,则默认为“%”。有关指定帐户名的更多信息,请参阅第6.2.4节“指定帐户名”。

要显示授予当前用户(您用于连接到服务器的帐户)的权限,可以使用以下任何语句:

SHOW GRANTS;
SHOW GRANTS FOR CURRENT_USER;
SHOW GRANTS FOR CURRENT_USER();
mysql> show grants for root \G
*************************** 1. row ***************************
Grants for root@%: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
1 row in set (0.00 sec)

mysql>
mysql> SHOW GRANTS FOR CURRENT_USER;
+-------------------------------------------------------------+
| Grants for root@%                                           |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)

如果在定义者上下文中使用SHOW GRANTS FOR CURRENT_USER(或任何等效语法),例如在以定义者而非调用者权限执行的存储过程中,则显示的授权是定义者的授权,而不是调用者的授权。

SHOW GRANTS不显示可用于指定帐户但授予其他帐户的权限。例如,如果存在匿名帐户,则命名帐户可能能够使用其权限,但SHOW GRANTS不会显示这些权限。

SHOW GRANTS输出不包括IDENTIFIED BY PASSWORD子句。请改用SHOW CREATE USER语句。请参阅第13.7.5.12节“ SHOW CREATE USER 语句”。