REVOKE
REVOKE語法用于刪除指定用戶的某一項權(quán)限。您可以通過SHOW PRIVILEGES語句查看所有用戶具備的權(quán)限,再使用REVOKE語句刪除指定用戶不合適的權(quán)限。
引擎與版本
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語句是否可以執(zhí)行成功,還取決于執(zhí)行者自身擁有的權(quán)限。
權(quán)限(privilege_definition)
共以下幾種權(quán)限:
權(quán)限 | 說明 |
ALL或ALL PRIVILEGE | 刪除用戶具有的所有權(quán)限,包括READ、WRITE、ADMIN和TRASH權(quán)限。 |
READ | 刪除用戶具有的“讀”權(quán)限。 |
WRITE | 刪除用戶具有的“寫”權(quán)限。 |
ADMIN | 刪除用戶具有的“管理員”權(quán)限。 |
TRASH | 刪除用戶具有的“刪除”權(quán)限。 |
SYSTEM | 刪除對于集群層面的管理權(quán)限。包含GLOBAL ADMIN權(quán)限。 |
權(quán)限范圍(resource_definition)
寬表引擎和時序引擎對REVOKE
語句可撤回權(quán)限的資源范圍的支持情況如下:
權(quán)限 | 寬表引擎 | 時序引擎 | 說明 |
GLOBAL | 〇 | 〇 | 撤回全局所有資源的特定權(quán)限。 |
DATABASE | 〇 | 〇 | 撤回指定Database的某個權(quán)限。作用等同于SCHEMA。 說明 寬表引擎2.5.3.3及以上版本支持 |
TABLE | 〇 | ?? | 撤回指定表的某個權(quán)限。 |
權(quán)限資源范圍的優(yōu)先級:GLOBAL > DATABASE(SCHEMA)> TABLE。
在使用DATABASE、SCHEMA或TABLE關(guān)鍵字時,需添加對應(yīng)級別的對象名稱(identifier)。例如DATABASE default
、SCHEMA default
、TABLE test
分別表示數(shù)據(jù)庫default和表test。
刪除對象(user_identifier)
user_identifier為權(quán)限刪除操作的用戶名。
示例
刪除所有權(quán)限
刪除用戶user1
擁有的數(shù)據(jù)庫db1
的全部權(quán)限。
REVOKE ALL ON DATABASE db1 FROM user1;
-- 或者
REVOKE ALL ON SCHEMA db1 FROM user1;
刪除指定權(quán)限
刪除用戶
user2
對數(shù)據(jù)庫db2
中的表table2
所擁有的管理員權(quán)限。REVOKE ADMIN ON TABLE db2.table2 FROM user2;
刪除用戶
user3
對表table3
所擁有的寫權(quán)限。REVOKE WRITE ON TABLE table3 FROM user3;
刪除用戶
user4
所擁有的全局讀權(quán)限。REVOKE READ ON GLOBAL FROM user4;