首批通过分布式安全可靠测评,为关键业务系统打造
GRANT
更新时间:2026-04-10 11:58:36
描述
该语句用于系统管理员授予用户权限,包括对象权限、系统权限和角色。
权限要求
执行 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)]
obj_clause:
schema_name.relation_name
参数解释
| 参数 | 描述 |
|---|---|
| obj_all_col_priv | 指定授予的权限,您可通过授予权限或角色来直接或间接授予用户权限,同时把多个权限赋予用户时,权限类型使用英文逗号(,)隔开。具体的权限类型及其说明请参见 Oracle 模式下的权限分类。 |
| obj_clause | 指定授权的对象。 |
| grant_user | 指定要授予权限的用户或角色,有如下几种取值。
|
| IDENTIFIED BY password | 为待授权的用户指定一个密码,此处密码为明文,存入 dba_users 表后,服务器端会变为密文存储下来。如果密码中包含特殊字符 ~!@#%^&*_-+=`|(){}[]:;',.?/,需使用英文双引号("")包含。 |
| WITH GRANT OPTION | 指定权限是否允许转授,取消授权时级联。 |
| WITH ADMIN OPTION | 指定权限是否允许转授,取消授权时不级联。 |
| role | 指定授予的角色,有如下几种取值。
|
示例
为用户
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。GRANT COMMENT ANY TABLE TO role1;