---
title: "GRANT - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: GRANT 描述 该语句用于给指定的用户或角色授予相应的权限，或者将角色授予用户或角色。 使用限制及注意事项 不支持循环 GRANT 操作。例如，角色 A 授予角色 B，角色 B 授予角色 C，则角色 C 授予角色 A 会报错。 权限要求 将对象权限授予用户权限要求 执行 GRANT 语句时，当前用户必须拥有被授予的…
---
切换语言

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

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

# GRANT

更新时间：2026-04-07 20:57:20

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/600.sql-statement-of-mysql-mode/5500.grant-of-mysql-mode.md)  

## 描述

该语句用于给指定的用户或角色授予相应的权限，或者将角色授予用户或角色。

## 使用限制及注意事项

不支持循环 `GRANT` 操作。例如，角色 A 授予角色 B，角色 B 授予角色 C，则角色 C 授予角色 A 会报错。

## 权限要求

### 将对象权限授予用户权限要求

- 执行 `GRANT` 语句时，当前用户必须拥有被授予的权限。例如，想要使用用户 `user1` 为用户 `user2` 授予表 `tbl1` 的 `SELECT` 权限，则用户 `user1` 必须拥有表 `tbl1` 的 `SELECT` 权限。
 - 执行 `GRANT` 语句时，当前用户需拥有 `GRANT OPTION` 权限。关 OceanBase 数据库权限的详细介绍，请参见 [MySQL 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016100)。

#### 说明

为用户授权后，该用户需重新连接 OceanBase 数据库，权限才能生效。

### 将角色授予用户或角色权限要求

- 当前用户具备 `SUPER` 权限时，可以 `GRANT` 所有角色。
 - 将角色授予其他用户或角色时，当前用户必须拥有被授予的角色，并且拥有 `ADMIN OPTION` 权限，才能授权成功。查看当前用户所拥有的权限的相关操作请参见 [查看用户权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016102)。

## 语法

### 将对象权限授予用户或角色

```sql
GRANT priv_type[(column_name_list)] [, priv_type[(column_name_list)] ...]
    ON [object_type] priv_level
    TO {user [, user...]}
    [WITH GRANT OPTION];

column_name_list:
    column_name [, column_name ...]

object_type:
    TABLE
    | FUNCTION
    | PROCEDURE
    | CATALOG

user:
    user_or_role
    | user_name IDENTIFIED [WITH auth_plugin] BY password
    | user_name IDENTIFIED [WITH auth_plugin] BY PASSWORD password

user_or_role:
    user_name | role_name

```

### 将角色授予用户或角色

```sql
GRANT role_name [, role_name ...]
    TO user_or_role [, user_or_role ...]
    [WITH ADMIN OPTION];

```

## 参数解释

| **参数** | **描述** |
| --- | --- |
| priv_type | 指定授予的权限类型，可以授予多个权限，多个权限间使用英文逗号（`,`）隔开。具体的权限类型及其说明请参见 [MySQL 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016100)。注意：PROXY 参数当前版本仅记录该关键字语法，功能不生效。 |
| column_name_list | 可选项，用于授予列级权限的列表，授予的权限仅作用于列出的列上。如果不指定，则权限适用于整个表或对象。详细介绍信息，参见 [直接授予权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016096)。 |
| object_type | 可选项，表示授权的对象类型（即权限应用的对象类型）。详细介绍可参见下文 [object_type](#object_type)。 |
| priv_level | 指定授予权限的层级。具有以下格式：   - 可以指定在所有数据库和所有表上生效（`*.*`）。 - 指定数据库或指定表生效（`db_name.*`，`*.table_name`） - 特定的数据库中特定的表生效（`db_name.table_name`） - 权限应用的对象类型是 Catalog 时，需指定外部数据目录的名称（`external_catalog_name`）。 |
| user | 指定要授予权限的用户，可以是一个或多个用户，多个用户间使用英文逗号（`,`）隔开。如果用户不存在，该语句会直接创建用户。 |
| auth_plugin | 用于指定用户身份验证的方式，目前仅支持 `mysql_native_password` 身份验证插件。 |
| BY password | 为待授权的用户指定一个密码，此处密码为明文，存入 `mysql.user` 表后，服务器端会变为密文存储下来。如果密码中包含特殊字符 ``~!@#%^&*_-+=`\|(){}[]:;',.?/``，需使用英文引号（`''` 或 `""`）包含。 |
| BY PASSWORD password | 为待授权的用户指定一个密码，此处密码为密文，将直接存入 `mysql.user` 表。 |
| WITH GRANT OPTION | 指定权限是否允许转授，取消授权时级联。 |
| role_name | 指定角色的名称。 |
| WITH ADMIN OPTION | 指定角色权限是否允许转授，取消授权时不级联。 |

### object_type

#### 注意

在使用 `object_type` 子句时，需要确保所指定的对象确实是对应的类型，否则将导致语法错误。

- `TABLE`：表示权限应用的对象类型是表。
 - `FUNCTION`：表示权限应用的对象类型是函数。
 - `PROCEDURE`：表示权限应用的对象类型是存储过程。
 - `CATALOG`：表示权限应用的对象类型是 Catalog。

  #### 说明

  对于 OceanBase 数据库 V4.3.5 版本，权限应用的对象类型从 V4.3.5 BP2 版本开始引入 `CATALOG`。

**示例如下：**

- 授予 `user001` 对 `test` 数据库下所有对象的 `SELECT` 权限，因为所指定的对象不是指定的类型，所以导致会报错。

  ```sql
  GRANT SELECT ON TABLE test.* TO user001;

  ```

  返回结果如下：

  ```shell
  ERROR 1144 (42000): Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used

  ```
 - 授予 `user001` 对 `test` 数据库下表 `tbl1` 的 `SELECT` 权限。

  ```sql
  GRANT SELECT ON TABLE test.tbl1 TO user001;

  ```
 - 授予 `user002` 对 `test` 数据库下函数 `calculate_salary` 的执行权限。

  ```sql
  GRANT EXECUTE ON FUNCTION test.calculate_salary TO user002;

  ```
 - 授予 `user003` 对 `test` 数据库下存储过程 `pro_generate_data` 的执行权限。

  ```sql
  GRANT EXECUTE ON PROCEDURE test.pro_generate_data TO user003;

  ```
 - 授予 `user004` 对 Catalog 的对象 `test_odps_catalog` 的 `SELECT` 和 `USE CATALOG` 权限。

  ```sql
  GRANT SELECT, USE CATALOG ON CATALOG test_odps_catalog TO user004 WITH GRANT OPTION;

  ```

## 示例

### 示例一：授予对象权限

- 为已存在的用户 `user1` 赋予数据库 `db1` 的 `CREATE VIEW` 权限，并设置允许转授其他用户相同的权限。

  ```sql
  GRANT CREATE VIEW ON db1.* TO user1 WITH GRANT OPTION;

  ```
 - 为已存在的用户 `user1` 赋予数据库 `db1` 的 `CREATE` 权限，并修改 `user1` 的密码。

  ```sql
  GRANT CREATE ON db1.* TO user1 IDENTIFIED by '********';

  ```

  执行后查看 `mysql.user` 表中 `user1` 用户的密码，会看到已更新为最新设置的密码。
 - 为不存在的用户 `user2` 赋予数据库 `db1` 的 `CREATE` 权限，并为 `user2` 设置密码。

  ```sql
  GRANT CREATE ON db1.* TO user2 IDENTIFIED by '********';

  ```
 - 为已存在的用户 `user001` 赋予数据库 `test` 中的表 `tbl1` 列 `col1` 的 `SELECT` 权限。

  ```sql
  GRANT SELECT(col1) ON test.tbl1 TO user001;

  ```
 - 授予用户 `user005` 对全局级别的 `CREATE CATALOG` 和 `USE CATALOG` 权限。

  ```sql
  GRANT CREATE CATALOG, USE CATALOG ON *.* TO user004 WITH GRANT OPTION;

  ```

### 示例二：将角色授予用户或角色

- 将角色 `role001` 的权限授予角色 `role002`，并且允许转授。

  ```sql
  GRANT role001 TO role002 WITH ADMIN OPTION;

  ```
 - 将角色 `role001` 的权限授予用户 `user001`，并且允许转授。

  ```sql
  GRANT role001 TO user001 WITH ADMIN OPTION;

  ```

## 相关文档

- 授予用户权限的操作可参见 [授予权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016096)。
 - 查看用户权限的操作可参见 [查看用户权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016102)。
 - 可从 `mysql.user` 表中查看创建的用户信息，`mysql.user` 表的详细介绍可参见 [mysql.user](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002015251)。
 - [向角色中添加权限](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002017132)
 - [将角色授予用户或角色](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002017129)
 - [激活角色](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002017133)
 - [间接授权](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016097)

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