修改用户权限包括授予用户权限和撤销用户权限。
通过 SQL 语句授予权限
前提条件
当授予对象权限时,当前用户必须是对象的所有者,或者拥有被授予的权限(例如,
test1把表t1的SELECT权限授予test2,则test1必须拥有表t1的SELECT的权限),并且拥有GRANT OPTION权限,或者拥有GRANT ANY OBJECT PRIVILEGE权限,才能授予成功。当授予系统权限或角色时,当前用户必须拥有被授予的权限或角色,并且拥有
GRANT OPTION权限,或者拥有GRANT ANY PRIVILEGE权限或GRANT ANY ROLE权限,才能授予成功。
查看当前拥有权限的操作请参见 查看用户权限。如果您没有所需的权限,请联系管理员为您添加。查看当前拥有角色的操作请参见 查看角色。
注意事项
进行授权操作时,需要注意以下事项:
同时把多个权限赋予用户时,权限类型用英文逗号(,)分隔。
用户被授权后,该用户只有重新连接 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
| DELETE
| INDEX
| INSERT
| SELECT
| UPDATE
| REFERENCES
| EXECUTE
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];
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
语句使用说明:
obj_privilege:指定授予的对象权限类型。同时将多个权限授予用户时,权限类型之间用英文逗号(,)分隔。obj_clause:指定授予的对象权限的涉及的对象。system_privilege:指定授予的系统权限类型。同时将多个权限授予用户时,权限类型之间用英文逗号(,)分隔。WITH GRANT OPTION:表示指定当前授予的权限是否允许转授,且取消授权时会级联。
操作示例
授予系统权限
将系统权限
CREATE SEQUENCE授予用户test。obclient> GRANT CREATE SEQUENCE TO test;授予对象权限
将视图
emp_view的SELECT、UPDATE权限授予用户test。obclient> GRANT SELECT, UPDATE ON emp_view TO test;
GRANT 语句的更多信息,请参见 GRANT。
通过 SQL 语句撤销权限
前提条件
当撤销对象权限时,当前用户必须拥有被撤销的权限(例如,
test1要撤销test2对表t1的SELECT权限,则test1必须拥有表t1的SELECT权限),并且拥有GRANT OPTION权限,或者拥有GRANT ANY OBJECT PRIVILEGE权限,才能撤销成功。当撤销系统权限或角色时,当前用户必须拥有被撤销的权限或角色,并且拥有
GRANT OPTION权限,或者拥有GRANT ANY PRIVILEGE权限或GRANT ANY ROLE权限,才能撤销成功。撤销
ALL PRIVILEGES和GRANT OPTION权限时,当前用户必须拥有全局GRANT OPTION权限,或者对权限表的UPDATE及DELETE权限。
查看当前拥有权限的操作请参见 查看用户权限。如果您没有所需的权限,请联系管理员为您添加。
注意事项
同时对某个用户撤销多个权限时,权限类型用英文逗号(,)分隔。
同时撤销多个用户的授权时,用户名用英文逗号(,)分隔。
当授权给用户时,该权限没有指定
GRANT OPTION时,撤销操作不会级联。例如,用户test1给test2授予了某些权限,撤回test1的权限不会同时也撤回test2的相应权限。
撤销权限的语法
撤销对象权限的语法如下:
REVOKE obj_privileges
ON obj_clause FROM user_list;
user_list:
user [, user ...]
obj_privileges:
obj_privilege [, obj_privilege ...]
obj_privilege:
ALTER
| DELETE
| INDEX
| INSERT
| SELECT
| UPDATE
| REFERENCES
| EXECUTE
obj_clause:
relation_name
| relation_name '.' relation_name
| DIRECTORY relation_name
relation_name:
STR_VALUE
撤销系统权限的语法如下:
REVOKE {system_privilege_list | ALL PRIVILEGES}
FROM user_list;
REVOKE ALL [PRIVILEGES], GRANT_OPTION FROM user_list;
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
语句使用说明:
obj_privilege:指定待撤销的对象权限的类型。同时撤销多个权限时,权限类型之间用英文逗号(,)分隔。obj_clause:指定撤销的对象权限涉及的对象。system_privilege:指定待撤销的系统权限类型。同时撤销多个权限时,权限类型之间用英文逗号(,)分隔。
操作示例
撤销系统权限
撤销用户
test的系统权限CREATE SEQUENCE。obclient> REVOKE CREATE SEQUENCE FROM test;撤销对象权限
撤销用户
test的对于视图emp_view的对象权限SELECT权限和UPDATE权限。obclient> REVOKE ALL PRIVILEGES FROM user_name;




