SHOW PRIVILEGES

SHOW PRIVILEGES语法用于查询所有用户拥有的权限。您可以根据查询结果,判断指定用户的权限是否合适,方便您对数据库进行权限管理,进一步规避安全风险。

引擎与版本

  • SHOW PRIVILEGES语法适用于宽表引擎和时序引擎。

  • 宽表引擎2.4.3及以上版本支持SHOW PRIVILEGES语法。

  • 时序引擎无版本限制。

语法

show_privileges_statement ::=  SHOW PRIVILEGES

使用说明

使用SHOW PRIVILEGES语法时必须具有ADMIN权限。如何授予ADMIN权限,请参见GRANT。更多权限说明,请参见权限分类

返回结果集说明

列名

类型

说明

user

VARCHAR

拥有权限的用户名。

global privileges

VARCHAR

该用户拥有的GLOBAL级权限集合。

database privileges

VARCHAR

该用户拥有的DATABASE级(Namespace级)权限集合。

table privileges

VARCHAR

该用户拥有的TABLE级权限集合。

说明

时序引擎暂不支持为TABLE级别的授权,返回结果为空。

说明

为了便于应用处理,权限列中的数据都是以JSON的形式展示。JSON的结构如下:

  • key:访问对象的名称(如一个数据库名或一个表名)。全局权限的key固定为GLOBAL

  • value:权限的列表。

即使没有对应级别的权限,值也会是一个空JSON对象的字符串。

示例

展示所有用户的权限。

SHOW PRIVILEGES;

返回结果:

+-------+-------------------------------------------------------+-------------------------------------------------+--------------------------------------------------------------+
| user  |                   global privileges                   |               database privileges               |                       table privileges                       |
+-------+-------------------------------------------------------+-------------------------------------------------+--------------------------------------------------------------+
| User1 |                  {"actions":["READ"]}                 | {"Db1":{"actions":["WRITE"],"namespace":"Db1"}} | {"Db1.Table1":{"actions":["READ"],"tableName":"Db1.Table1"}} |
+-------+-------------------------------------------------------+-------------------------------------------------+--------------------------------------------------------------+