首批通过分布式安全可靠测评,为关键业务系统打造
GRANT
更新时间:2025-02-06 18:11:53
描述
该语句用于系统管理员授予用户权限,包括对象权限、系统权限和角色。
说明
- 当授予对象权限时,当前用户必须是对象的所有者,或者拥有被授予的权限(例如,
user1把表tbl1的SELECT权限授予user2,则user1必须拥有表tbl1的SELECT的权限),并且拥有GRANT OPTION权限,才能授予成功。 - 当授予系统权限和角色时,当前用户必须拥有被授予的权限或角色,并且拥有
GRANT OPTION权限,才能授予成功。 - 用户授权的角色,用户只有重新连接 OceanBase 数据库,权限才能生效。
- 授予用户的直接权限立即生效。
语法
/*授予对象权限*/
GRANT obj_with_col_priv_list
ON obj_clause TO grantee_list [WITH GRANT OPTION];
obj_with_col_priv_list:
obj_with_col_priv
| obj_with_col_priv_list, obj_with_col_priv
obj_with_col_priv:
obj_privilege [column_list]
obj_privilege:
ALTER
| DELETE
| INDEX
| INSERT
| SELECT
| UPDATE
| REFERENCES
| EXECUTE
obj_clause:
relation_name
| relation_name '.' relation_name
| DIRECTORY relation_name
grantee_list:
grantee_user_list[,grantee_role_list]
grantee_user_list:
user_name[,user_name...]
grantee_role_list:
role_name [, role_name ...]
/*授予系统权限*/
GRANT {system_privilege_list | ALL PRIVILEGES}
TO grantee_list [IDENTIFIED BY password];
system_privilege_list:
system_privilege [, system_privilege ...]
grantee_user_list:
user_name[,user_name...]
grantee_role_list:
role_name [, role_name ...]
system_privilege:
CREATE SESSION
| EXEMPT REDACTION POLICY
| SYSDBA
| SYSOPER
| SYSBACKUP
| CREATE TABLE
| CREATE ANY TABLE
| ALTER ANY TABLE
| BACKUP ANY TABLE
| DROP ANY TABLE
| LOCK ANY TABLE
| COMMENT ANY TABLE
| SELECT ANY TABLE
| INSERT ANY TABLE
| UPDATE ANY TABLE
| DELETE ANY TABLE
| FLASHBACK ANY TABLE
| CREATE ROLE
| DROP ANY ROLE
| GRANT ANY ROLE
| ALTER ANY ROLE
| AUDIT ANY
| GRANT ANY PRIVILEGE
| GRANT ANY OBJECT PRIVILEGE
| CREATE ANY INDEX
| ALTER ANY INDEX
| DROP ANY INDEX
| CREATE ANY VIEW
| DROP ANY VIEW
| CREATE VIEW
| SELECT ANY DICTIONARY
| CREATE PROCEDURE
| CREATE ANY PROCEDURE
| ALTER ANY PROCEDURE
| DROP ANY PROCEDURE
| EXECUTE ANY PROCEDURE
| CREATE SYNONYM
| CREATE ANY SYNONYM
| DROP ANY SYNONYM
| CREATE PUBLIC SYNONYM
| DROP PUBLIC SYNONYM
| CREATE SEQUENCE
| CREATE ANY SEQUENCE
| ALTER ANY SEQUENCE
| DROP ANY SEQUENCE
| SELECT ANY SEQUENCE
| CREATE TRIGGER
| CREATE ANY TRIGGER
| ALTER ANY TRIGGER
| DROP ANY TRIGGER
| CREATE PROFILE
| ALTER PROFILE
| DROP PROFILE
| CREATE USER
| ALTER USER
| DROP USER
| CREATE TYPE
| CREATE ANY TYPE
| ALTER ANY TYPE
| DROP ANY TYPE
| EXECUTE ANY TYPE
| UNDER ANY TYPE
| PURGE DBA_RECYCLEBIN
| CREATE ANY OUTLINE
| ALTER ANY OUTLINE
| DROP ANY OUTLINE
| SYSKM
| CREATE TABLESPACE
| ALTER TABLESPACE
| DROP TABLESPACE
| SHOW PROCESS
| ALTER SYSTEM
| CREATE DATABASE LINK
| CREATE PUBLIC DATABASE LINK
| DROP DATABASE LINK
| ALTER SESSION
| ALTER DATABASE
/*授予角色*/
GRANT role_list TO grantee_list [IDENTIFIED BY password][WITH ADMIN OPTION];
role_list:
role_name [, role_name ...]
grantee_list:
grantee_user_list[,grantee_role_list]
grantee_user_list:
user_name[,user_name...]
grantee_role_list:
role_name [, role_name ...]
参数解释
| 参数 | 描述 |
|---|---|
| obj_with_col_priv | 指定授予的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时把多个权限赋予用户时,权限类型用","隔开。 |
| system_privilege | 指定授予的系统权限类型。 同时把多个权限赋予用户时,权限类型用","隔开。 |
| obj_clause | 指定对象权限涉及的对象。 |
| WITH GRANT OPTION | 指定权限是否允许转授,取消授权时级联。 |
| WITH ADMIN OPTION | 指定权限是否允许转授,取消授权时不级联。 |
| grantee_list | 指定被授予权限或者角色的对象列表。 说明 被授予权限或者角色的对象可以是角色,也可以是用户。 |
| user_name | 用户名。 |
| role_name | 角色名。 |
可以授予的权限类型如下表所示。
权限类型说明表
| 权限 | 说明 |
|---|---|
| ALL PRIVILEGES | 除 GRANT OPTION 以外所有权限。 |
| ALTER | ALTER TABLE 的权限。 |
| CREATE | CREATE TABLE 的权限。 |
| DELETE | DELETE 的权限。 |
| DROP | DROP 的权限。 |
| GRANT OPTION | GRANT OPTION 的权限。 |
| INSERT | INSERT 的权限。 |
| UPDATE | UPDATE 的权限。 |
| SELECT | SELECT 的权限。 |
| INDEX | CREATE INDEX 和 DROP INDEX 的权限。 |
| REFERENCES | 创建指向表的约束的权限。 |
| EXECUTE | 执行预处理程序的权限。 |
| FLASHBACK | FLASHBACK 的权限。 |
| READ | READ 的权限。 |
| WRITE | WRITE 的权限。 |
| CREATE SESSION | 连接到数据库的权限。 |
| EXEMPT REDACTION POLICY | 绕过任意现有 REDACTION POLICY 并查看数据的权限。 |
| SYSDBA | SYSDBA 的权限。 |
| SYSOPER | SYSOPER 的权限。 |
| SYSBACKUP | SYSBACKUP 的权限。 |
| CREATE TABLE | 在指定用户 Schema 内创建表的权限。 |
| CREATE ANY TABLE | 在除 SYS 用户外所有用户 Schema 内创建表的权限。 |
| ALTER ANY TABLE | 在除 SYS 用户外所有用户 Schema 内修改表的权限。 |
| BACKUP ANY TABLE | 在除 SYS 用户外所有用户 Schema 内备份表的权限。 |
| DROP ANY TABLE | 在除 SYS 用户外所有用户 Schema 内删除表的权限。 |
| LOCK ANY TABLE | 在除 SYS 用户外所有用户 Schema 内锁定表的权限。 |
| COMMENT ANY TABLE | 在除 SYS 用户外所有用户 Schema 内评论表的权限。 |
| SELECT ANY TABLE | 在除 SYS 用户外所有用户 Schema 内查看表的权限。 |
| INSERT ANY TABLE | 在除 SYS 用户外所有用户 Schema 内的表插入行的权限。 |
| UPDATE ANY TABLE | 在除 SYS 用户外所有用户 Schema 内的表更新行的权限。 |
| DELETE ANY TABLE | 在除 SYS 用户外所有用户 Schema 内删除表的权限。 |
| FLASHBACK ANY TABLE | 在除 SYS 用户外所有用户 Schema 内 FLASHBACK 表的权限。 |
| CREATE ROLE | 创建角色的权限。 |
| DROP ANY ROLE | 删除任意角色的权限。 |
| GRANT ANY ROLE | 授予任意角色的权限。 |
| ALTER ANY ROLE | 修改任意角色的权限。 |
| AUDIT ANY | 在除 SYS 用户外所有用户 Schema 内修改对象的权限。 |
| GRANT ANY PRIVILEGE | 授予任意系统权限的权限。 |
| GRANT ANY OBJECT PRIVILEGE | 授予任意对象权限的权限。 |
| CREATE ANY INDEX | 在除 SYS 用户外所有用户 Schema 内创建索引的权限。 |
| ALTER ANY INDEX | 在除 SYS 用户外所有用户 Schema 内修改索引的权限。 |
| DROP ANY INDEX | 在除 SYS 用户外所有用户 Schema 内删除索引的权限。 |
| CREATE ANY VIEW | 在除 SYS 用户外所有用户 Schema 内创建视图的权限。 |
| DROP ANY VIEW | 在除 SYS 用户外所有用户 Schema 内删除视图的权限。 |
| CREATE VIEW | 在指定用户 Schema 内创建视图的权限。 |
| SELECT ANY DICTIONARY | 在指定用户 Schema 内查询 DICTIONARY 的权限。 |
| CREATE PROCEDURE | 在指定用户 Schema 内创建 PROCEDURE 的权限。 |
| CREATE ANY PROCEDURE | 在除 SYS 用户外所有用户 Schema 内创建PROCEDURE 的权限。 |
| ALTER ANY PROCEDURE | 在除 SYS 用户外所有用户 Schema 内修改PROCEDURE 的权限。 |
| DROP ANY PROCEDURE | 在除 SYS 用户外所有用户 Schema 内删除PROCEDURE 的权限。 |
| EXECUTE ANY PROCEDURE | 在除 SYS 用户外所有用户 Schema 内执行PROCEDURE 的权限。 |
| CREATE SYNONYM | 在指定用户 Schema 内创建 SYNONYM 的权限。 |
| CREATE ANY SYNONYM | 在除 SYS 用户外所有用户 Schema 内创建SYNONYM 的权限。 |
| DROP ANY SYNONYM | 在除 SYS 用户外所有用户 Schema 内删除SYNONYM 的权限。 |
| CREATE PUBLIC SYNONYM | 创建公共 SYNONYM 的权限。 |
| DROP PUBLIC SYNONYM | 删除公共 SYNONYM 的权限。 |
| CREATE SEQUENCE | 在指定用户 Schema 内创建 SEQUENCE 的权限。 |
| CREATE ANY SEQUENCE | 在除 SYS 用户外所有用户 Schema 内创建SEQUENCE 的权限。 |
| ALTER ANY SEQUENCE | 在除 SYS 用户外所有用户 Schema 内修改SEQUENCE 的权限。 |
| DROP ANY SEQUENCE | 在除 SYS 用户外所有用户 Schema 内删除SEQUENCE 的权限。 |
| SELECT ANY SEQUENCE | 在除 SYS 用户外所有用户 Schema 内查询SEQUENCE 的权限。 |
| CREATE TRIGGER | 在指定用户 Schema 内创建 TRIGGER 的权限。 |
| CREATE ANY TRIGGER | 在除 SYS 用户外所有用户 Schema 内创建 TRIGGER 的权限。 |
| ALTER ANY TRIGGER | 在除 SYS 用户外所有用户 Schema 内修改 TRIGGER 的权限。 |
| DROP ANY TRIGGER | 在除 SYS 用户外所有用户 Schema 内删除 TRIGGER 的权限。 |
| CREATE PROFILE | 创建 PROFILE 的权限。 |
| ALTER PROFILE | 修改 PROFILE 的权限。 |
| DROP PROFILE | 删除 PROFILE 的权限。 |
| CREATE USER | 创建用户的权限。 |
| ALTER USER | 修改用户的权限。 |
| DROP USER | 删除用户的权限。 |
| CREATE TYPE | 在指定用户 Schema 内创建 TYPE 的权限。 |
| CREATE ANY TYPE | 在除 SYS 用户外所有用户 Schema 内创建 TYPE 的权限。 |
| ALTER ANY TYPE | 在除 SYS 用户外所有用户 Schema 内修改 TYPE 的权限。 |
| DROP ANY TYPE | 在除 SYS 用户外所有用户 Schema 内删除 TYPE 的权限。 |
| EXECUTE ANY TYPE | 在除 SYS 用户外所有用户 Schema 内执行 TYPE 的权限。 |
| UNDER ANY TYPE | 在除 SYS 用户外所有用户 Schema 内 TYPE 的基础上创建 SUBTYPE 的权限。 |
| PURGE DBA_RECYCLEBIN | 从系统回收站中删除所有对象的权限。 |
| CREATE ANY OUTLINE | 在除 SYS 用户外所有用户 Schema 内创建 OUTLINE 的权限。 |
| ALTER ANY OUTLINE | 在除 SYS 用户外所有用户 Schema 内修改 OUTLINE 的权限。 |
| DROP ANY OUTLINE | 在除 SYS 用户外所有用户 Schema 内删除 OUTLINE 的权限。 |
| SYSKM | SYSKM 的权限。 |
| CREATE TABLESPACE | 创建表空间的权限。 |
| ALTER TABLESPACE | 修改表空间的权限。 |
| DROP TABLESPACE | 删除表空间的权限。 |
| ALTER SYSTEM | ALTER SYSTEM 的权限。 |
| CREATE DATABASE LINK | 在指定用户 Schema 内创建 DATABASE LINK 的权限。 |
| DROP DATABASE LINK | 在指定用户 Schema 内删除 DATABASE LINK 的权限。 |
| ALTER SESSION | 修改 SESSION 的权限。 |
| ALTER DATABASE | 修改 DATABASE 的权限。 |
示例
授予用户
user1除GRANT OPTION以外所有当前用户拥有的权限。obclient> GRANT ALL PRIVILEGES TO user1; Query OK, 0 rows affected授予用户
user2会话权限,允许登录 OceanBase 数据库。obclient> GRANT CREATE SESSION TO user2; Query OK, 0 rows affected将角色
role1授予用户user2。obclient> GRANT role1 TO user2; Query OK, 0 rows affected将角色
role2授予角色role1。obclient> GRANT role2 TO role1; Query OK, 0 rows affected将表
user1.tbl1的SELECT对象权限授予角色role1。obclient> GRANT SELECT ON user1.tbl1 TO role1; Query OK, 0 rows affected