---
title: "REVOKE - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: REVOKE 描述 该语句用于系统管理员撤销用户的某些权限。 使用限制及注意事项 用户必须拥有被撤销的权限（例如， user1 要撤销 user2 对表 tbl1 的 SELECT 权限，则 user1 必须拥有表 tbl1 的 SELECT 的权限），并且拥有 GRANT OPTION 权限。 权限要求 当权限没有…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# REVOKE

更新时间：2026-04-07 11:24:45

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/900.sql-statement-of-oracle-mode/300.dcl-of-oracle-mode/2900.revoke-of-oracle-mode.md)  

## 描述

该语句用于系统管理员撤销用户的某些权限。

## 使用限制及注意事项

- 用户必须拥有被撤销的权限（例如，`user1` 要撤销 `user2` 对表 `tbl1` 的 `SELECT` 权限，则 `user1` 必须拥有表 `tbl1` 的 `SELECT` 的权限），并且拥有 `GRANT OPTION` 权限。

## 权限要求

- 当权限没有 `GRANT OPTION` 时，撤销操作不会级联。例如，用户 `user1` 给 `user2` 授予了某些权限，撤回 `user1` 的权限不会同时也撤回 `user2` 的相应权限。当拥有 `GRANT OPTION` 时，撤销操作会级联。
 - 撤销 `ALL PRIVILEGES` 和 `GRANT OPTION` 权限时，当前用户必须拥有全局 `GRANT OPTION` 权限，或者对权限表的 `UPDATE` 及 `DELETE` 权限。

有关 OceanBase 数据库权限的详细介绍，请参见 [Oracle 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479235)。

## 语法

```sql
/*撤销对象权限*/

REVOKE {obj_privilege [, obj_privilege...]} ON obj_clause FROM {user_name [, user_name ...]}

/*撤销系统权限*/
REVOKE {system_privilege_list | ALL PRIVILEGES} FROM user_name [, user_name ...];

REVOKE ALL [PRIVILEGES], GRANT_OPTION FROM user_name [, user_name ...];

/*撤销角色*/
REVOKE role_name [, role_name ...] FROM user_name;

obj_clause:
      * [. *]
    | relation_name . {*  | relation_name}
    | [DIRECTORY] relation_name
    | LOCATION location_name

```

## 参数解释

| 参数 | 描述 |
| --- | --- |
| obj_privilege | 指定撤销的对象权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时撤销多个权限时，权限类型用","隔开。 |
| obj_clause | 指定撤销权限的层级，`relation_name` 指定具体对象的名称。权限可以分为以下几个层级：   - 全局层级：适用于所有的数据库。 - 数据库层级：适用于一个给定数据库中的所有目标。 - 表层级：表权限适用于一个给定表中的所有列。   权限层级的具体取值介绍可参见下文 [obj_clause](#obj_clause) |
| system_privilege_list | 指定撤销的系统权限类型。 同时撤销多个权限时，权限类型用","隔开。 |
| ALL [PRIVILEGES] | 表示除 `GRANT OPTION` 以外所有权限。 |

### obj_clause

- `* [. *]`：表示所有数据库中的所有表。

  **示例如下：**

  从用户 `user001` 和 `user002` 中撤销全局的 `SELECT` 和 `INSERT` 权限。

  ```sql
  REVOKE SELECT, INSERT ON *.* FROM 'user001', 'user002';

  ```
 - `relation_name . {* | relation_name}`：表示指定数据库中的所有表。`db_name` 表示指定数据库的数据库名称。

  **示例如下：**

  从用户 `user003` 中撤销对 `test` 数据库中所有表的插入权限。

  ```sql
  REVOKE INSERT ON 'test'.* FROM 'user003';

  ```
 - `[DIRECTORY] relation_name`：表示特定数据库中的特定表。

  **示例如下：**

  从用户 `user003` 中撤销对 `test` 数据库中的 `tbl2` 表的 `SELECT` 权限。

  ```sql
  REVOKE SELECT ON 'test'.'tbl2' FROM 'user003';

  ```
 - `LOCATION location_name`：表示 Location 对象。

  #### 说明

  对于 OceanBase 数据库 V4.4.x 版本，`REVOKE` 语句从 V4.4.1 版本开始支持 `LOCATION` 参数及对应的 `READ` 和 `WRITE` 权限。

  **示例如下：**

  从用户 `user005` 中撤销对 Location 的对象 `local_t` 的 `READ` 权限。

  ```sql
  REVOKE READ ON LOCATION local_t FROM user005;

  ```

可以撤销的权限类型如下表所示。

**权限类型说明表**

| 权限 | 说明 |
| --- | --- |
| ALL PRIVILEGES | 除 `GRANT OPTION` 以外所有权限。 |
| ALTER | `ALTER TABLE` 的权限。 |
| CREATE | `CREATE TABLE` 的权限。 |
| DELETE | `DELETE` 的权限。 |
| DROP | `DROP` 的权限。 |
| GRANT OPTION | `GRANT OPTION` 的权限。 |
| INSERT | `INSERT` 的权限。 |
| UPDATE | `UPDATE` 的权限。 |
| SELECT | `SELECT` 的权限。 |
| INDEX | `CREATE INDEX` 和 `DROP INDEX` 的权限。 |
| SHOW VIEW | `SHOW CREATE VIEW` 权限。 |
| SHOW DATABASES | 全局 `SHOW DATABASES` 的权限。 |
| SUPER | `SET GLOBAL` 修改全局系统参数的权限。 |
| REFERENCES | 创建指向表的约束的权限。 |
| EXECUTE | 执行预处理程序的权限。 |
| FLASHBACK | `FLASHBACK` 的权限。 |
| READ | `READ` 的权限。 |
| WRITE | `WRITE` 的权限。 |
| CREATE SESSION | 连接到数据库的权限。 |
| EXEMPT REDACTION POLICY | 绕过任意现有 `REDACTION POLICY` 并查看数据的权限。 |
| SYSDBA | `SYSDBA` 的权限。 |
| SYSOPER | `SYSOPER` 的权限。 |
| SYSBACKUP | `SYSBACKUP` 的权限。 |
| CREATE TABLE | 在指定用户 Schema 内创建表的权限。 |
| CREATE ANY TABLE | 在除 SYS 用户外所有用户 Schema 内创建表的权限。 |
| ALTER ANY TABLE | 在除 SYS 用户外所有用户 Schema 内修改表的权限。 |
| BACKUP ANY TABLE | 在除 SYS 用户外所有用户 Schema 内创建表的权限。 |
| DROP ANY TABLE | 在除 SYS 用户外所有用户 Schema 内备份表的权限。 |
| LOCK ANY TABLE | 在除 SYS 用户外所有用户 Schema 内锁定表的权限。 |
| COMMENT ANY TABLE | 在除 SYS 用户外所有用户 Schema 内评论表的权限。 |
| SELECT ANY TABLE | 在除 SYS 用户外所有用户 Schema 内查看表的权限。 |
| INSERT ANY TABLE | 在除 SYS 用户外所有用户 Schema 内的表插入行的权限。 |
| UPDATE ANY TABLE | 在除 SYS 用户外所有用户 Schema 内的表更新行的权限。 |
| DELETE ANY TABLE | 在除 SYS 用户外所有用户 Schema 内删除表的权限。 |
| FLASHBACK ANY TABLE | 在除 SYS 用户外所有用户 Schema 内 `FLASHBACK` 表的权限。 |
| CREATE ROLE | 创建角色的权限。 |
| DROP ANY ROLE | 删除任意角色的权限。 |
| GRANT ANY ROLE | 授予任意角色的权限。 |
| ALTER ANY ROLE | 修改任意角色的权限。 |
| AUDIT ANY | 在除 SYS 用户外所有用户 Schema 内修改对象的权限。 |
| GRANT ANY PRIVILEGE | 授予任意系统权限的权限。 |
| GRANT ANY OBJECT PRIVILEGE | 授予任意对象权限的权限。 |
| CREATE ANY INDEX | 在除 SYS 用户外所有用户 Schema 内创建索引的权限。 |
| ALTER ANY INDEX | 在除 SYS 用户外所有用户 Schema 内修改索引的权限。 |
| DROP ANY INDEX | 在除 SYS 用户外所有用户 Schema 内删除索引的权限。 |
| CREATE ANY VIEW | 在除 SYS 用户外所有用户 Schema 内创建视图的权限。 |
| DROP ANY VIEW | 在除 SYS 用户外所有用户 Schema 内删除索引的权限。 |
| CREATE VIEW | 在指定用户 Schema 内创建视图的权限。 |
| SELECT ANY DICTIONARY | 在指定用户 Schema 内查询 `DICTIONARY` 的权限。 |
| CREATE PROCEDURE | 在指定用户 Schema 内创建 `PROCEDURE` 的权限。 |
| CREATE ANY PROCEDURE | 在除 SYS 用户外所有用户 Schema 内创建`PROCEDURE` 的权限。 |
| ALTER ANY PROCEDURE | 在除 SYS 用户外所有用户 Schema 内修改`PROCEDURE` 的权限。 |
| DROP ANY PROCEDURE | 在除 SYS 用户外所有用户 Schema 内删除`PROCEDURE` 的权限。 |
| EXECUTE ANY PROCEDURE | 在除 SYS 用户外所有用户 Schema 内执行`PROCEDURE` 的权限。 |
| CREATE SYNONYM | 在指定用户 Schema 内创建 `SYNONYM` 的权限。 |
| CREATE ANY SYNONYM | 在除 SYS 用户外所有用户 Schema 内创建`SYNONYM` 的权限。 |
| DROP ANY SYNONYM | 在除 SYS 用户外所有用户 Schema 内删除`SYNONYM` 的权限。 |
| CREATE PUBLIC SYNONYM | 创建公共 `SYNONYM` 的权限。 |
| DROP PUBLIC SYNONYM | 删除公共 `SYNONYM` 的权限。 |
| CREATE SEQUENCE | 在指定用户 Schema 内创建 `SEQUENCE` 的权限。 |
| CREATE ANY SEQUENCE | 在除 SYS 用户外所有用户 Schema 内创建`SEQUENCE` 的权限。 |
| ALTER ANY SEQUENCE | 在除 SYS 用户外所有用户 Schema 内修改`SEQUENCE` 的权限。 |
| DROP ANY SEQUENCE | 在除 SYS 用户外所有用户 Schema 内删除`SEQUENCE` 的权限。 |
| SELECT ANY SEQUENCE | 在除 SYS 用户外所有用户 Schema 内查询`SEQUENCE` 的权限。 |
| CREATE TRIGGER | 在指定用户 Schema 内创建 `TRIGGER` 的权限。 |
| CREATE ANY TRIGGER | 在除 SYS 用户外所有用户 Schema 内创建`TRIGGER` 的权限。 |
| ALTER ANY TRIGGER | 在除 SYS 用户外所有用户 Schema 内修改`TRIGGER` 的权限。 |
| DROP ANY TRIGGER | 在除 SYS 用户外所有用户 Schema 内删除`TRIGGER` 的权限。 |
| CREATE PROFILE | 创建 `PROFILE` 的权限。 |
| ALTER PROFILE | 修改 `PROFILE` 的权限。 |
| DROP PROFILE | 删除 `PROFILE` 的权限。 |
| CREATE USER | 创建用户的权限。 |
| ALTER USER | 修改用户的权限。 |
| DROP USER | 删除用户的权限。 |
| CREATE TYPE | 在指定用户 Schema 内创建 `TYPE` 的权限。 |
| CREATE ANY TYPE | 在除 SYS 用户外所有用户 Schema 内创建 `TYPE` 的权限。 |
| ALTER ANY TYPE | 在除 SYS 用户外所有用户 Schema 内修改 `TYPE` 的权限。 |
| DROP ANY TYPE | 在除 SYS 用户外所有用户 Schema 内删除 `TYPE` 的权限。 |
| EXECUTE ANY TYPE | 在除 SYS 用户外所有用户 Schema 内执行 `TYPE` 的权限。 |
| UNDER ANY TYPE | 在除 SYS 用户外所有用户 Schema 内 `TYPE` 的基础上创建 `SUBTYPE` 的权限。 |
| PURGE DBA_RECYCLEBIN | 从系统回收站中删除所有对象的权限。 |
| CREATE ANY OUTLINE | 在除 SYS 用户外所有用户 Schema 内创建`OUTLINE` 的权限。 |
| ALTER ANY OUTLINE | 在除 SYS 用户外所有用户 Schema 内修改`OUTLINE` 的权限。 |
| DROP ANY OUTLINE | 在除 SYS 用户外所有用户 Schema 内删除`OUTLINE` 的权限。 |
| SYSKM | `SYSKM` 的权限。 |
| CREATE TABLESPACE | 创建表空间的权限。 |
| ALTER TABLESPACE | 修改表空间的权限。 |
| DROP TABLESPACE | 删除表空间的权限。 |
| ALTER SYSTEM | `ALTER SYSTEM` 的权限 |
| CREATE DATABASE LINK | 在指定用户 Schema 内创建 `DATABASE LINK` 的权限。 |
| CREATE PUBLIC DATABASE LINK | 创建 `PUBLIC DATABASE LINK` 的权限。 |
| DROP DATABASE LINK | 在指定用户 Schema 内删除 `DATABASE LINK` 的权限。 |
| ALTER SESSION | 修改 `SESSION` 的权限。 |
| ALTER DATABASE | 修改 `DATABASE` 的权限。 |

## 示例

1. 创建用户和角色。

   ```sql
   CREATE USER user1 IDENTIFIED BY password;
   CREATE ROLE role1;
   CREATE TABLE user1.tbl1 (id INT);

   ```
 2. 授予角色权限。

   ```sql
   GRANT SELECT ON user1.tbl1 TO role1;

   ```
 3. 授予角色给用户。

   ```sql
   GRANT role1 TO user1;

   ```
 4. 撤销角色对表的权限。

   ```sql
   REVOKE SELECT ON user1.tbl1 FROM role1;

   ```

上述步骤您可以完整的实现授权与撤销权限操作。

下述示例将向您展示撤销所有权限、撤销对象权限、撤销系统权限的 SQL 语句。

- 撤销用户 user1 的所有权限。

```shell
obclient> REVOKE ALL PRIVILEGES FROM user1;
Query OK, 0 rows affected

```

- 撤销角色 role1 对表 user1.tbl1 的 SELECT 对象权限。

```shell
obclient> REVOKE SELECT ON user1.tbl1 FROM role1;
Query OK, 0 rows affected

```

- 撤销用户 user1 和用户 user2 的 DROP ANY TABLE 系统权限。

```shell
obclient> REVOKE DROP ANY TABLE FROM user1,user2;
Query OK, 0 rows affected

```

## 相关文档

- 查看用户权限的操作可参见 [查看用户权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479232)。
 - 查看角色和角色中的权限的操作可参见 [查看角色](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004480417)。
 - 可从 `dba_users` 表中查看创建的用户信息，`dba_users` 表的详细介绍可参见 [DBA_USERS](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004477310)。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
