---
title: "修改用户权限 - OceanBase 数据库 V4.3.0 | OceanBase 文档中心"
description: 修改用户权限 修改用户权限包括授予用户权限和撤销用户权限。 授予权限 前提条件 当授予对象权限时，当前用户必须是对象的所有者，或者拥有被授予的权限（例如， test1 把表 t1 的 SELECT 权限授予 test2 ，则 test1 必须拥有表 t1 的 SELECT 的权限），并且拥有 GRANT OPTION…
---
切换语言

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

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

# 修改用户权限

更新时间：2026-04-10 11:58:35

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.0/zh-CN/600.manage/500.security-and-permissions/300.access-control/200.user-and-permission/300.permission-of-oracle-mode/700.modify-user-permissions-of-oracle-mode.md)  

修改用户权限包括授予用户权限和撤销用户权限。

## 授予权限

### 前提条件

- 当授予对象权限时，当前用户必须是对象的所有者，或者拥有被授予的权限（例如，`test1`把表 `t1` 的 `SELECT` 权限授予 `test2`，则 `test1` 必须拥有表 `t1` 的 `SELECT` 的权限），并且拥有 `GRANT OPTION` 权限，或者拥有 `GRANT ANY OBJECT PRIVILEGE` 权限，才能授予成功。
 - 当授予系统权限或角色时，当前用户必须拥有被授予的权限或角色，并且拥有 `GRANT OPTION` 权限，或者拥有 `GRANT ANY PRIVILEGE` 权限或 `GRANT ANY ROLE` 权限，才能授予成功。

查看当前拥有权限的操作请参见 [查看用户权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642570)。如果您没有所需的权限，请联系管理员为您添加。查看当前拥有角色的操作请参见 [查看角色](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000643200)。

### 注意事项

进行授权操作时，需要注意以下事项：

- 同时把多个权限赋予用户时，权限类型用英文逗号（,）分隔。
 - 用户被授权后，该用户只有重新连接 OceanBase 数据库，权限才能生效。

### 授予权限的语法

授予对象权限的语法如下：

```sql
GRANT obj_with_col_priv_list
    ON obj_clause TO grant_user_list [WITH GRANT OPTION];

obj_with_col_priv_list:
  obj_with_col_priv
  | obj_with_col_priv_list, obj_with_col_priv

obj_with_col_priv:
  obj_privilege [column_list]

obj_clause:
  relation_name
  | relation_name '.' relation_name
  | DIRECTORY relation_name

grant_user_list:
    grant_user [, grant_user ...]

```

授予系统权限的语法如下：

```sql
GRANT {system_privilege_list | ALL PRIVILEGES}
    TO grantee_user [IDENTIFIED BY password];

system_privilege_list:
  system_privilege [, system_privilege ...]

```

语句使用说明：

- `obj_privilege`：指定授予的对象权限类型。同时将多个权限授予用户时，权限类型之间用英文逗号（,）分隔。

  有关 Oracle 模式支持的所有对象权限类型，请参见 [Oracle 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642568)。
 - `obj_clause`：指定授予的对象权限的涉及的对象。
 - `system_privilege`：指定授予的系统权限类型。同时将多个权限授予用户时，权限类型之间用英文逗号（,）分隔。

  有关 Oracle 模式支持的所有系统权限类型，请参见 [Oracle 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642568)。
 - `WITH GRANT OPTION`：表示指定当前授予的权限是否允许转授，且取消授权时会级联。

### 操作示例

- 授予系统权限

  将系统权限 `CREATE SEQUENCE` 授予用户 `test`。

  ```shell
  obclient> GRANT CREATE SEQUENCE TO test;

  ```
 - 授予对象权限

  将视图 `emp_view` 的 `SELECT` 、`UPDATE` 权限授予用户 `test`。

  ```shell
  obclient> GRANT SELECT, UPDATE ON emp_view TO test;

  ```

`GRANT` 语句的更多信息，请参见 [GRANT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000643832)。

## 撤销权限

### 前提条件

- 当撤销对象权限时，当前用户必须拥有被撤销的权限（例如，`test1` 要撤销 `test2` 对表 `t1` 的 `SELECT` 权限，则 `test1` 必须拥有表 `t1` 的 `SELECT` 权限），并且拥有 `GRANT OPTION` 权限，或者拥有 `GRANT ANY OBJECT PRIVILEGE` 权限，才能撤销成功。
 - 当撤销系统权限或角色时，当前用户必须拥有被撤销的权限或角色，并且拥有 `GRANT OPTION` 权限，或者拥有 `GRANT ANY PRIVILEGE` 权限或 `GRANT ANY ROLE` 权限，才能撤销成功。
 - 撤销 `ALL PRIVILEGES` 和 `GRANT OPTION` 权限时，当前用户必须拥有全局 `GRANT OPTION` 权限，或者对权限表的 `UPDATE` 及 `DELETE` 权限。

查看当前拥有权限的操作请参见 [查看用户权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642570)。如果您没有所需的权限，请联系管理员为您添加。

### 注意事项

- 同时对某个用户撤销多个权限时，权限类型用英文逗号（,）分隔。
 - 同时撤销多个用户的授权时，用户名用英文逗号（,）分隔。
 - 当授权给用户时，该权限没有指定 `GRANT OPTION` 时，撤销操作不会级联。例如，用户 `test1` 给 `test2` 授予了某些权限，撤回 `test1` 的权限不会同时也撤回 `test2` 的相应权限。

### 撤销权限的语法

撤销对象权限的语法如下：

```sql
REVOKE obj_privileges
  ON obj_clause FROM user_list;

user_list:
  user [, user ...]

obj_privileges:
  obj_privilege [, obj_privilege ...]

relation_name:
  STR_VALUE

```

撤销系统权限的语法如下：

```sql
REVOKE {system_privilege_list | ALL PRIVILEGES}
  FROM user_list;
REVOKE ALL [PRIVILEGES], GRANT_OPTION FROM user_list;

```

语句使用说明：

- `obj_privilege`：指定待撤销的对象权限的类型。同时撤销多个权限时，权限类型之间用英文逗号（,）分隔。

  有关 Oracle 模式支持的所有对象权限类型，请参见 [Oracle 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642568)。
 - `obj_clause`：指定撤销的对象权限涉及的对象。
 - `system_privilege`：指定待撤销的系统权限类型。同时撤销多个权限时，权限类型之间用英文逗号（,）分隔。

  有关 Oracle 模式支持的所有系统权限类型，请参见 [Oracle 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000642568)。

### 操作示例

- 撤销系统权限

  撤销用户 `test` 的系统权限 `CREATE SEQUENCE`。

  ```shell
  obclient> REVOKE CREATE SEQUENCE FROM test;

  ```
 - 撤销对象权限

  撤销用户 `test` 的对于视图 `emp_view` 的对象权限 `SELECT` 权限和 `UPDATE` 权限。

  ```shell
  obclient> REVOKE ALL PRIVILEGES FROM user_name;

  ```

`REVOKE` 语句的更多信息，请参见 [REVOKE](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000643817)。

 上一篇 下一篇 ![有帮助](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) 咨询热线
