本节主要介绍 Oracle 模式中角色的管理命令。在 Oracle 模式中,角色是一组系统权限、对象权限的组合,角色中也可以包含其他角色。

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

    OceanBase 数据库支持对 Oracle 模式中的角色进行以下操作:

    说明

    授予系统权限或角色时,当前用户必须拥有被授予的权限或角色,并且拥有 GRANT OPTION 权限,才能操作成功。

    • 角色之间相互授权

      角色相互授权的语法如下:

      1. GRANT <role_name_list> TO role_name WITH ADMIN OPTION;
    • PUBLIC 角色中添加权限或将 PUBLIC 角色添加给用户

      支持整个租户内的 PUBLIC 角色,可以向 PUBLIC 角色中添加权限,也可以将 PUBLIC 角色添加给某一个用户。

      示例如下:

      1. obclient> GRANT [privilege_list] TO PUBLIC;
      2. obclient> GRANT PUBLIC TO user_name;
    • 指定用户在登录时生效或失效的角色

      支持通过 DEFAULT ROLE 子句,指定一个或者多个 Role 名称,生效一个或多个角色;也可以通过 ALL,生效所有被授予的角色。同时,还可以通过 EXCEPT,指定失效的角色;通过 NONE,失效所有被授予的角色。

      示例如下:

      1. obclient> ALTER USER user_name DEFAULT ROLE role_name;
    • 指定当前会话中,用户生效或失效的角色

      支持在当前会话中通过 SET ROLE 语句设置用户被授予的角色哪些生效或失效。

      说明

      设置后,仅影响当前 Session,不影响之后的 Session。