修改用户权限包括授予用户权限和撤销用户权限。
通过 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;
复制