---
title: "修改角色 - OceanBase 数据库 V4.3.0 | OceanBase 文档中心"
description: 修改角色 修改角色包括向角色中添加权限或从角色中撤销权限。 向角色中添加权限 前提条件 为角色授予系统权限或对象权限时，当前用户必须拥有被授予的权限，并且拥有 GRANT OPTION 权限，或者拥有 GRANT ANY OBJECT PRIVILEGE 权限、 GRANT ANY PRIVILEGE 权限，才能授权…
---
切换语言

- 中文站 - 简体中文
- 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/400.manage-roles-of-oracle-mode/700.modify-a-role-of-oracle-mode.md)  

修改角色包括向角色中添加权限或从角色中撤销权限。

## 向角色中添加权限

### 前提条件

为角色授予系统权限或对象权限时，当前用户必须拥有被授予的权限，并且拥有 `GRANT OPTION` 权限，或者拥有 `GRANT ANY OBJECT PRIVILEGE` 权限、`GRANT ANY PRIVILEGE` 权限，才能授权成功。

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

### 语句及示例

向角色中添加对象权限的语句如下：

```sql
GRANT obj_privilege ON obj_clause TO role_name;

obj_clause:
    relation_name
  | relation_name '.' relation_name

```

向角色中添加系统权限的语句如下：

```sql
GRANT {system_privilege | ALL PRIVILEGES}
    TO role_name [WITH ADMIN OPTION];

```

语句使用说明：

- `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 ADMIN OPTION`：表示指定当前授予的权限允许转授，且取消授权时不会级联。

示例如下：

将表 `test1.tbl1` 的 `SELECT` 对象权限授予角色 `role1`。

```sql
obclient> GRANT SELECT ON test1.tbl1 TO role1;

```

此外，您也可以向 `PUBLIC` 角色中添加权限，SQL 语句如下：

#### 注意

为了数据库安全，OceanBase 数据库建议您根据自身业务需求来合理授权，请勿随意将该角色赋予用户。

```sql
obclient> GRANT [privilege_list] TO PUBLIC;

```

添加权限后，系统会将该权限添加到租户内的每个用户的权限域中。所有用户都可以立即执行该权限所授权的操作。关于 `PUBLIC` 角色的更多信息，请参见 [角色管理概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000643195)。

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

## 从角色中撤销权限

### 前提条件

撤销角色的系统权限、对象权限或角色时，当前用户必须拥有被撤销的权限或角色，并且拥有 `GRANT OPTION` 权限，或者拥有 `GRANT ANY OBJECT PRIVILEGE` 权限、`GRANT ANY PRIVILEGE` 权限或 `GRANT ANY ROLE` 权限，才能撤销成功。

### 语句及示例

从角色中撤销对象权限的语句如下：

```sql
REVOKE obj_privilege ON obj_clause FROM role_name;

```

从角色中撤销系统权限的语句如下：

```sql
REVOKE {system_privilege | ALL PRIVILEGES}
    FROM role_name;

```

语句使用说明：

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

从角色 `role1` 中撤销系统权限 `CREATE SESSION` 的示例如下：

```sql
REVOKE CREATE SESSION FROM role1;

```

## 相关文档

- [GRANT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000643832)
 - [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) 咨询热线
