首批通过分布式安全可靠测评,为关键业务系统打造
GRANT
更新时间:2026-03-25 15:37:42
描述
该语句用于系统管理员授予用户权限,包括对象权限、系统权限和角色。
权限要求
执行 GRANT 语句时,当前用户必须拥有被授予的权限,以及被授予权限的转授权限。例如,想要使用用户 user1 为用户 user2 授予表 tbl1 的 SELECT 权限,则用户 user1 必须拥有表 tbl1 的 SELECT 权限,以及表 tbl1 的 SELECT 权限的转授权限。
说明
为用户授权后,该用户需重新连接 OceanBase 数据库,权限才能生效。
语法
/* 授予对象权限 */
GRANT {obj_all_col_priv [, obj_all_col_priv...]}
ON obj_clause
TO {grant_user [, grant_user...]}
[WITH GRANT OPTION]
/* 授予系统权限或角色 */
GRANT obj_all_col_priv [, obj_all_col_priv...]
TO grantee_clause
[WITH ADMIN OPTION]
grantee_clause:
grant_user [, grant_user...]
| grant_user IDENTIFIED BY password
obj_all_col_priv:
role
| sys_and_obj_priv [(column_list)]
| ALL [PRIVILEGES] [(column_list)]
| READ
| WRITE
obj_clause:
schema_name.relation_name
| LOCATION location_name
参数解释
| 参数 | 描述 |
|---|---|
| obj_all_col_priv | 指定授予的权限,您可通过授予权限或角色来直接或间接授予用户权限,同时把多个权限赋予用户时,权限类型使用英文逗号(,)隔开。具体的权限类型及其说明请参见 Oracle 模式下的权限分类。 |
| obj_clause | 指定授权的对象。详细介绍可参见下文 obj_clause。 |
| grant_user | 指定要授予权限的用户或角色,有如下几种取值。
|
| IDENTIFIED BY password | 为待授权的用户指定一个密码,此处密码为明文,存入 dba_users 表后,服务器端会变为密文存储下来。如果密码中包含特殊字符 ~!@#%^&*_-+=`|(){}[]:;',.?/,需使用英文双引号("")包含。 |
| WITH GRANT OPTION | 指定权限是否允许转授,取消授权时级联。 |
| WITH ADMIN OPTION | 指定权限是否允许转授,取消授权时不级联。 |
| role | 指定授予的角色,有如下几种取值。
|
obj_clause
schema_name.relation_name:表示权限应用的对象类型是数据库对象,表、视图、序列等。LOCATION location_name:表示权限应用的对象类型是 Location。可以授予用户 Location 对象的权限如下:READ:表示 Location 对象的读权限。WRITE:表示 Location 对象的写权限。
说明
对于 OceanBase 数据库 V4.4.x 版本,
GRANT语句从 V4.4.1 版本开始支持LOCATION参数及对应的READ和WRITE权限。
示例
为用户
user1赋予CREATE VIEW权限,并设置允许转授其他用户相同的权限。obclient> GRANT CREATE VIEW TO user1 WITH ADMIN OPTION;为用户
user1授予CONNECT角色,并修改user1的密码。obclient> GRANT CONNECT TO user1 IDENTIFIED by '********';执行后查看
dba_users表中user1用户的密码,会看到已更新为最新设置的密码。将 COMMENT ANY TABLE 权限授予角色
role1。obclient> GRANT COMMENT ANY TABLE TO role1;授予
user006对 Location 的对象local_t的读取权限。obclient> GRANT READ ON LOCATION local_t TO user006;