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及以上版本支持 |
TABLE | 〇 | ✖️ | 撤回指定表的某个权限。 |
权限资源范围的优先级:GLOBAL > DATABASE(SCHEMA)> TABLE。
在使用DATABASE、SCHEMA或TABLE关键字时,需添加对应级别的对象名称(identifier)。例如DATABASE default
、SCHEMA default
、TABLE 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;