REVOKE =========================== 描述 ----------- 该语句用于系统管理员撤销 User 的某些权限。 使用说明如下: * 用户必须拥有被撤销的权限(例如,user1 要撤销 user2 对表 t1 的 SELECT 权限,则 user1 必须拥有表 t1 的 SELECT的权限),并且拥有 GRANT OPTION权限。 * 撤销 ALL PRIVILEGES 和 GRANT OPTION 权限时,当前用户必须拥有全局 GRANT OPTION 权限,或者对权限表的UPDATE 及 DELETE 权限。 * 撤销操作不会级联。例如,用户 user1 给 user2 授予了某些权限,撤回 user1 的权限不会同时也撤回 user2 的相应权限。 格式 ----------- ```javascript REVOKE priv_type      ON database.tblname      FROM 'username'; privilege_type: ALTER | CREATE | CREATE USER | CREATE VIEW | DELETE | DROP | GRANT OPTION | INDEX | INSERT | PROCESS | SELECT | SHOW DATABASES | SHOW VIEW | SUPER | UPDATE | USAGE ``` 参数解释 ------------- | **参数** | **描述** | |------------------|---------------------------------------------------------------------------------------| | priv_type | 指定撤销的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时对某个用户撤销多个权限时,权限类型用","隔开。 | | database.tblname | 指定数据库中的表。 用"\*"代替 database 或 *table_name* ,表示撤销全局权限,即撤销对数据库中所有表的操作权限。 | | username | 指定撤销权限的用户。同时撤销多个用户的授权时,用户名用","隔开。 | 可以撤销的权限类型如下表所示。 **权限类型说明表** | **权限** | **说明** | |-------------------|-----------------------------------------------------------------| | ALL PRIVILEGES | 除GRANT OPTION以外所有权限。 | | ALTER | ALTER TABLE的权限。 | | CREATE | CREATE TABLE的权限。 | | CREATE USER | CREATE USER,DROP USER,RENAME USER和REVOKE ALL PRIVILEGES的权限。 | | CREATE TABLEGROUP | 全局CREATE TABLEGROUP的权限。 | | DELETE | DELETE的权限。 | | DROP | DROP的权限。 | | GRANT OPTION | GRANT OPTION的权限。 | | INSERT | INSERT的权限。 | | SELECT | SELECT的权限。 | | UPDATE | UPDATE的权限。 | | SUPER | SET GLOBAL修改全局系统参数的权限。 | | SHOW DATABASES | 全局 SHOW DATABASES的权限。 | | INDEX | CREATE INDEX, DROP INDEX的权限。 | | CREATE VIEW | 创建、删除视图的权限。 | | SHOW VIEW | SHOW CREATE VIEW权限。 | | CREATE SYNONYM | 创建同义词的权限。 | **说明** 目前没有change effective tenant 的权限控制,故 sys 租户下的用户都可以撤销权限。 示例 ----------- 执行以下命令撤销用户 obsqluser01 的所有权限。 ```javascript OceanBase(admin@TEST)>REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'obsqluser01'; Query OK, 0 rows affected (0.03 sec) ```