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

OceanBase为用户指定生效或失效的角色

2023-02-11
261

您可以根据需要指定用户生效或失效的角色。

一个用户可以被授予多个角色。授予角色后,您可以再设置这些角色中,哪些生效,哪些失效。用户将拥有生效角色的所有权限,用户不拥有失效角色中所包含的权限。

指定用户在登录时生效或失效的角色

OceanBase 数据库的 Oracle 模式支持通过 ALTER USER 语句的 DEFAULT ROLE 子句指定其他用户在登录时生效或失效的角色。

前提条件

  • 当前用户必须拥有被授予的角色,并且拥有 GRANT OPTION 权限,才能执行生效或失效角色操作。

  • 当前用户还必须拥有 UPDATE USER系统权限,才可以执行 ALTER USER 命令。

查看当前拥有权限的操作请参见 查看用户权限。如果您没有 GRANT OPTION 权限,请联系管理员为您添加,为用户添加权限的相关操作请参见 修改用户权限。查看当前拥有角色的操作请参见 查看角色

注意事项

DEFAULT ROLE 子句仅支持指定通过 GRANT 语句直接授予用户的角色或由具有 CREATE ROLE 权限的用户创建的角色,不能通过 DEFAULT ROLE 子句指定以下角色:

  • 未授予用户的角色

    不能指定生效或失效用户未被授予的角色,用户角色授权相关操作,请参见 将角色授予用户

  • 通过其他角色授予的角色

    不能指定生效或失效通过其他角色授予的角色,将角色授予角色的相关操作,请参见 将角色授予角色

生效或失效角色的语法

主要包含以下场景:

  • 指定在登录时生效用户被授予的一个或多个角色

    SQL 语句如下:

    obclient> ALTER USER user_name DEFAULT ROLE role_name;
    
  • 指定在登录时生效用户被授予的所有角色

    SQL 语句如下:

    obclient> ALTER USER user_name DEFAULT ROLE ALL;
    
  • 指定在登录时生效用户被授予的部分角色

    SQL 语句如下:

    obclient> ALTER USER user_name DEFAULT ROLE ALL EXCEPT role_name;
    
  • 指定在登录时失效用户被授予的所有角色。

    SQL 语句如下:

    obclient>ALTER USER user_name DEFAULT ROLE NONE;
    

语句使用说明:

  • role_name:角色名,多个角色名之间用英文逗号(,)分隔。

  • ALL:表示生效用户被授予的所有角色。

  • EXCEPT 子句表示除了 EXCEPT 子句中列出的角色除外,生效用户被授予的其他所有角色。多个角色名之间用英文逗号(,)分隔。

  • NONE:表示失效用户被授予的所有角色。

操作示例

指定在登录时生效用户被授予的角色 role1

obclient>ALTER USER test DEFAULT ROLE role1;

更多 ALTER USER 语句的信息请参见 ALTER USER

指定当前会话中生效或失效的角色

OceanBase 数据库的 Oracle 模式支持在当前会话中通过 SET ROLE 语句生效或失效当前登录用户被授予的角色。

说明

通过 SET ROLE 语句生效或失效的角色,仅影响当前 Session,不影响之后的 Session。

主要使用场景如下:

  • 指定在当前会话中生效当前登录用户被授予的一个或多个角色

    SQL 语句如下:

    obclient> SET ROLE role_name [ IDENTIFIED BY password ];
    
  • 指定在当前会话中生效当前登录用户被授予的所有角色

    SQL 语句如下:

    obclient> SET ROLE ALL;
    
  • 指定在当前会话中生效当前登录用户被授予的部分角色

    SQL 语句如下:

    obclient> SET ROLE ALL EXCEPT role_name;
    
  • 指定在当前会话中失效当前登录用户被授予的所有角色。

    SQL 语句如下:

    obclient> SET ROLE NONE;
    

语句使用说明:

  • role_name:角色名,多个角色名之间用英文逗号(,)分隔。

  • IDENTIFIED BY password:指定生效角色的密码。如果在新建角色时,为该角色指定了密码,则您必须指定密码才能生效该角色。

    新建角色的相关操作及介绍请参见 新建角色

  • ALL:表示在当前会话中,生效当前登录用户被授予的所有角色。

    注意

    生效用户被授予的所有角色时,如果被授予的角色中有指定了密码的角色,系统将会报错。

  • EXCEPT 子句表示除了 EXCEPT 子句中列出的角色除外,生效当前登录用户被授予的其他所有角色。多个角色名之间用英文逗号(,)分隔。

  • NONE:表示失效当前登录用户被授予的所有角色。

示例:

  • 指定在当前会话中生效由密码 **1*** 标识的角色 role1

    obclient> SET ROLE role1 IDENTIFIED BY **1***;
    Query OK, 0 rows affected
    
  • 指定在当前会话中生效除了角色 role2 之外的所有角色。

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

评论