暂无图片
暂无图片
8
暂无图片
暂无图片
暂无图片

OceanBase修改用户权限

2023-02-03
442

修改用户权限包括授予用户权限和撤销用户权限。

通过 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;
    复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论