REVOKE语法用于删除指定用户的某一项权限。您可以通过SHOW PRIVILEGES语句查看所有用户具备的权限,再使用REVOKE语句删除指定用户不合适的权限。

引擎与版本

REVOKE语法适用于宽表引擎和时序引擎。无版本限制。

语法

revoke_permission_statement ::=  REVOKE privilege_definition ON resource_definition FROM user_identifier
privilege_definition        ::=  ALL | ALL PRIVILEGE| READ | WRITE | ADMIN | TRASH | SYSTEM
resource_definition         ::=  GLOBAL | DATABASE identifier | SCHEMA identifier | TABLE identifier

使用说明

REVOKE语句是否可以执行成功,还取决于执行者自身拥有的权限。

权限(privilege_definition

共以下几种权限:

权限

说明

ALL或ALL PRIVILEGE

删除用户具有的所有权限,包括READ、WRITE、ADMIN和TRASH权限。

READ

删除用户具有的“读”权限。

WRITE

删除用户具有的“写”权限。

ADMIN

删除用户具有的“管理员”权限。

TRASH

删除用户具有的“删除”权限。

SYSTEM

删除对于集群层面的管理权限。包含GLOBAL ADMIN权限。

权限范围(resource_definition)

宽表引擎和时序引擎对REVOKE语句可撤回权限的资源范围的支持情况如下:

权限

宽表引擎

时序引擎

说明

GLOBAL

撤回全局所有资源的特定权限。

DATABASE

撤回指定Database的某个权限。作用等同于SCHEMA。

说明

宽表引擎2.5.3.3及以上版本支持DATABASE关键字。2.5.3.3之前版本仅支持SCHEMA关键字。

TABLE

✖️

撤回指定表的某个权限。

权限资源范围的优先级:GLOBAL > DATABASE(SCHEMA)> TABLE。

在使用DATABASE、SCHEMA或TABLE关键字时,需添加对应级别的对象名称(identifier)。例如DATABASE defaultSCHEMA defaultTABLE test分别表示数据库default和表test。

删除对象(user_identifier

user_identifier为权限删除操作的用户名。

示例

删除所有权限

删除用户user1拥有的数据库db1的全部权限。

REVOKE ALL ON DATABASE db1 FROM user1;
-- 或者
REVOKE ALL ON SCHEMA db1 FROM user1;

删除指定权限

  • 删除用户user2对数据库db2中的表table2所拥有的管理员权限。

    REVOKE ADMIN ON TABLE db2.table2 FROM user2;
  • 删除用户user3对表table3所拥有的写权限。

    REVOKE WRITE ON TABLE table3 FROM user3; 
  • 删除用户user4所拥有的全局读权限。

    REVOKE READ ON GLOBAL FROM user4;