OceanBase GRANT
描述
该语句用于系统管理员授予 User 某些权限,包括对象权限,系统权限和角色。
说明
当授予对象权限时,当前用户必须是对象的所有者,或者拥有被授予的权限(例如,user1 把表 t1 的 SELECT 权限授予 user2,则 user1 必须拥有表 t1 的 SELECT 的权限),并且拥有 GRANT OPTION 权限,才能授予成功。
当授予系统权限和角色时,当前用户必须拥有被授予的权限或角色,并且拥有 GRANT OPTION 权限,才能授予成功。
用户授权后,该用户只有重新连接 OceanBase,权限才能生效。
格式
/*授予对象权限*/
GRANT obj_with_col_priv_list
ON obj_clause TO grant_user_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
| AUDIT
| COMMENT
| DELETE
| GRANT
| INDEX
| INSERT
| LOCK
| RENAME
| SELECT
| UPDATE
| REFERENCES
| EXECUTE
| CREATE
| FLASHBACK
| READ
| WRITE
| DEBUG
obj_clause:
relation_name
| relation_name '.' relation_name
| DIRECTORY relation_name
grant_user_list:
grant_user [, grant_user ...]
/*授予系统权限*/
GRANT {system_privilege_list | ALL PRIVILEGES}
TO grantee_user [IDENTIFIED BY password] [WITH {GRANT | ADMID} OPTION];
system_privilege_list:
system_privilege [, system_privilege ...]
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_user [IDENTIFIED BY password] [WITH {GRANT | ADMID} OPTION];
role_list:
role [, role ...]
参数解释
参数 |
描述 |
---|---|
priv_type |
指定授予的权限类型。具体的权限类型及其说明请参见下方权限类型说明表。 同时把多个权限赋予用户时,权限类型用“,”隔开。 |
system_privilege |
指定授予的系统权限类型。 同时把多个权限赋予用户时,权限类型用“,”隔开。 |
obj_clause |
指定授予权限的层级。权限可以分为以下几个层级:
|
WITH GRANT OPTION |
指定权限是否允许转授,取消授权时级联。 |
WITH ADMIN OPTION |
指定权限是否允许转授,取消授权时不级联。 |
可以授予的权限类型如下表所示。
权限类型说明表
权限 |
说明 |
---|---|
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的权限 |
SHOW VIEW |
SHOW CREATE VIEW权限。 |
SHOW DATABASES |
全局 SHOW DATABASES的权限。 |
SUPER |
SET GLOBAL修改全局系统参数的权限。 |
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的权限。 |
CREATE PUBLIC DATABASE LINK |
创建PUBLIC DATABASE LINK的权限。 |
DROP DATABASE LINK |
在指定用户SCHEMA内删除DATABASE LINK的权限。 |
ALTER SESSION |
修改SESSION的权限。 |
ALTER DATABASE |
修改DATABASE的权限。 |
示例
-
执行以下命令给用户 obsqluser 赋予所有权限。
obclient>GRANT ALL PRIVILEGES TO obsqluser;
Query OK, 0 rows affected (0.03 sec)