首批通过分布式安全可靠测评,为关键业务系统打造
REVOKE
更新时间:2026-07-15 20:56:55
描述
该语句用于从指定的用户列表中撤销一个或多个特定权限。
使用限制及注意事项
撤销操作不会级联。例如,用户
user1给user2授予了某些权限,撤回user1的权限不会同时也撤回user2的相应权限。需要撤销权限的用户必须存在,否则将报错。
权限要求
如果使用第一种
REVOKE语法revoke_stmt1时,需要当前用户拥有GRANT OPTION权限,并且必须拥有被撤销的权限(例如,user1要撤销user2对表t1的SELECT权限,则user1必须拥有表t1的SELECT的权限)。如果使用第二种
REVOKE语法revoke_stmt2撤销所有权限(ALL PRIVILEGES和GRANT OPTION权限)时,需要当前用户必须拥有全局GRANT OPTION权限,或者对权限表的UPDATE及DELETE权限。
有关 OceanBase 数据库权限的详细介绍,请参见 MySQL 模式下的权限分类。
语法
revoke_stmt1:
REVOKE grant_privileges ON priv_level FROM user_list;
revoke_stmt2:
REVOKE ALL [PRIVILEGES], GRANT OPTION FROM user_list;
grant_privileges:
priv_type_list
| ALL [PRIVILEGES]
priv_type_list:
priv_type [, priv_type...]
priv_level:
*.*
| db_name.*
| db_name.table_name
user_list:
user [, user ...]
user:
user_name
参数解释
| 参数 | 描述 |
|---|---|
| revoke_stmt1 | 从用户列表中撤销特定权限级别权限的 SQL 语句。 |
| revoke_stmt2 | 从用户列表中撤销所有权限和授予选项的 SQL 语句。 |
| grant_privileges | 指定需要撤销的权限类型,可以是特定权限类型的列表,也可以是所有权限(GRANT OPTION 除外)。 |
| priv_type_list | 表示具体的权限类型列表。同时撤销多个授权时,权限间使用英文逗号(,)隔开。 |
| priv_type | 表示具体的权限类型。具体的权限类型的详细介绍,参见 MySQL 模式下的权限分类。 |
| ALL [PRIVILEGES] | 表示除 GRANT OPTION 以外所有权限。 |
| priv_level | 指定授予权限的层级。权限层级的具体取值介绍可参见下文 priv_level。 |
| user_list | 指定需要撤销权限的用户列表。同时撤销多个用户的授权时,用户名用英文逗号(,)隔开。 |
| user_name | 表示用户名称。 |
priv_level
*.*:表示所有数据库中的所有表。示例如下:
从用户
user001和user002中撤销全局的SELECT和INSERT权限。REVOKE SELECT, INSERT ON *.* FROM user001, user002;db_name.*:表示指定数据库中的所有表。db_name表示指定数据库的数据库名称。示例如下:
从用户
user003中撤销对test数据库中所有表的插入权限。REVOKE INSERT ON test.* FROM user003;db_name.table_name:表示特定数据库中的特定表。示例如下:
从用户
user003中撤销对test数据库中的tbl2表的SELECT权限。REVOKE SELECT ON test.tbl2 FROM user003;
示例
撤销用户
user003的所有权限。REVOKE ALL PRIVILEGES, GRANT OPTION FROM user003;通过撤销
user004用户的SELECT权限,查看ALL PRIVILEGES授予了哪些权限。
给用户
user004授予ALL PRIVILEGES权限。GRANT ALL PRIVILEGES ON *.* TO user004;查看用户
user004拥有的授权。SHOW GRANTS FOR user004;返回结果如下:
+------------------------------------------+ | Grants for user004@% | +------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'user004' | +------------------------------------------+ 1 row in set撤销用户
user004的SELECT权限。REVOKE SELECT ON *.* FROM user004;再次查看用户
user004拥有的授权。SHOW GRANTS FOR user004;返回结果如下:
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for user004@% | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | GRANT ALTER, CREATE, CREATE USER, DELETE, DROP, INSERT, UPDATE, INDEX, CREATE VIEW, SHOW VIEW, SHOW DB, SUPER, PROCESS, CREATE_SYNONYM, FILE, ALTER TENANT, ALTER SYSTEM, CREATE RESOURCE POOL, CREATE RESOURCE UNIT, REPLICATION SLAVE, REPLICATION CLIENT, DROP DATABASE LINK, CREATE DATABASE LINK ON *.* TO 'user004' | +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set