首批通过分布式安全可靠测评,为关键业务系统打造
GRANT
更新时间:2026-04-12 18:40:48
描述
该语句用于给指定的用户或角色授予相应的权限,或者将角色授予用户或角色。
使用限制及注意事项
不支持循环 GRANT 操作。例如,角色 A 授予角色 B,角色 B 授予角色 C,则角色 C 授予角色 A 会报错。
权限要求
将对象权限授予用户权限要求
执行
GRANT语句时,当前用户必须拥有被授予的权限。例如,想要使用用户user1为用户user2授予表tbl1的SELECT权限,则用户user1必须拥有表tbl1的SELECT权限。执行
GRANT语句时,当前用户需拥有GRANT OPTION权限。关 OceanBase 数据库权限的详细介绍,请参见 MySQL 模式下的权限分类。
说明
为用户授权后,该用户需重新连接 OceanBase 数据库,权限才能生效。
将角色授予用户或角色权限要求
- 当前用户具备
SUPER权限时,可以GRANT所有角色。 - 将角色授予其他用户或角色时,当前用户必须拥有被授予的角色,并且拥有
ADMIN OPTION权限,才能授权成功。查看当前用户所拥有的权限的相关操作请参见 查看用户权限。
语法
将对象权限授予用户或角色
GRANT priv_type[(column_name_list)] [, priv_type[(column_name_list)] ...]
ON [object_type] priv_level
TO {user [, user...]}
[WITH GRANT OPTION]
priv_type:
ALTER
| CREATE
| CREATE USER
| CREATE VIEW
| DELETE
| DROP
| GRANT OPTION
| INSERT
| SELECT
| UPDATE
| INDEX
| EXECUTE
| SUPER
| ALL [PRIVILEGES]
| READ
| WRITE
| ...
column_name_list:
column_name [, column_name ...]
object_type:
TABLE
| FUNCTION
| PROCEDURE
| CATALOG
| LOCATION
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
将角色授予用户或角色
GRANT role_name [, role_name ...]
TO user_or_role [, user_or_role ...]
[WITH ADMIN OPTION];
user_or_role:
user_name | role_name
参数解释
| 参数 | 描述 |
|---|---|
| priv_type | 指定授予的权限类型,可以授予多个权限,多个权限间使用英文逗号(,)隔开。具体的权限类型及其说明请参见 MySQL 模式下的权限分类。注意:PROXY 参数当前版本仅记录该关键字语法,功能不生效。 |
| column_name_list | 可选项,用于授予列级权限的列表,授予的权限仅作用于列出的列上。如果不指定,则权限适用于整个表或对象。详细介绍信息,参见 直接授予权限。 |
| object_type | 可选项,表示授权的对象类型(即权限应用的对象类型)。详细介绍可参见下文 object_type。 |
| priv_level | 指定授予权限的层级。具有以下格式:
|
| 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。LOCATION:表示权限应用的对象类型是 Location。可以授予用户 Location 对象的权限如下:READ:表示 Location 对象的读权限。WRITE:表示 Location 对象的写权限。
说明
对于 OceanBase 数据库 V4.4.x 版本,
GRANT语句从 V4.4.1 版本开始支持LOCATION参数及对应的READ和WRITE权限。
示例
示例一:授予对象权限
为已存在的用户
developer_user赋予数据库sales_db的CREATE VIEW权限,并设置允许转授其他用户相同的权限。obclient> GRANT CREATE VIEW ON sales_db.* TO developer_user WITH GRANT OPTION;为已存在的用户
admin_user赋予数据库sales_db的CREATE权限,并修改admin_user的密码。obclient> GRANT CREATE ON sales_db.* TO admin_user IDENTIFIED BY '********';执行后查看
mysql.user表中admin_user用户的密码,会看到已更新为最新设置的密码。为不存在的用户
report_user赋予数据库sales_db的CREATE权限,并为report_user设置密码。obclient> GRANT CREATE ON sales_db.* TO report_user IDENTIFIED BY '********';为已存在的用户
analyst_user赋予数据库hr_db中的表employee_info列salary的SELECT权限。obclient> GRANT SELECT(salary) ON hr_db.employee_info TO analyst_user;授予用户
data_admin对全局级别的CREATE CATALOG和USE CATALOG权限。obclient> GRANT CREATE CATALOG, USE CATALOG ON *.* TO data_admin WITH GRANT OPTION;
示例二:使用 object_type 授予权限
授予
query_user对sales_db数据库下表orders的SELECT权限。obclient> GRANT SELECT ON TABLE sales_db.orders TO query_user;授予
developer_user对hr_db数据库下函数calculate_bonus的执行权限。obclient> GRANT EXECUTE ON FUNCTION hr_db.calculate_bonus TO developer_user;授予
dba_user对hr_db数据库下存储过程update_employee_info的执行权限。obclient> GRANT EXECUTE ON PROCEDURE hr_db.update_employee_info TO dba_user;授予
data_engineer对 Catalog 对象external_data_catalog的SELECT和USE CATALOG权限。obclient> GRANT SELECT, USE CATALOG ON CATALOG external_data_catalog TO data_engineer WITH GRANT OPTION;授予
etl_user对 Location 对象oss_data_location的读取权限。obclient> GRANT READ ON LOCATION oss_data_location TO etl_user WITH GRANT OPTION;
示例三:将角色授予用户或角色
将角色
app_admin_role的权限授予角色department_admin_role,并且允许转授。obclient> GRANT app_admin_role TO department_admin_role WITH ADMIN OPTION;将角色
read_only_role的权限授予用户analyst_user,并且允许转授。obclient> GRANT read_only_role TO analyst_user WITH ADMIN OPTION;
相关文档
- 授予用户权限的操作可参见 授予权限。
- 查看用户权限的操作可参见 查看用户权限。
- 可从
mysql.user表中查看创建的用户信息,mysql.user表的详细介绍可参见 mysql.user。 - 向角色中添加权限
- 将角色授予用户或角色
- 激活角色
- 间接授权