更新时间:2024-08-20 GMT+08:00

ALTER GROUP

功能描述

修改一个用户组的属性。

注意事项

  • ALTER GROUP非SQL标准语法,不推荐使用。
  • 其中两个子句(ADD USER,DROP USER)向用户组增加或删除用户(任何用户都可以是“用户”或者“用户组”)。这两个子句实际等效于将用户或者角色的权限授权或者回收给其他用户或角色,因此建议用GRANT或者REVOKE替代。
  • RENAME TO子句修改用户组的名称,等效于ALTER ROLE重命名角色。

语法格式

  • 向用户组中添加用户。
    1
    2
    ALTER GROUP group_name 
        ADD USER user_name [, ... ];
    

  • 从用户组中删除用户。
    1
    2
    ALTER GROUP group_name 
        DROP USER user_name [, ... ];
    

  • 修改用户组的名称。
    1
    2
    ALTER GROUP group_name 
        RENAME TO new_name;
    

参数说明

  • user_name

    现有角色名。

    取值范围:已存在的角色名,如果角色名中包含大写字母则需要使用双引号括起来。

  • group_name

    现有用户组名。

    取值范围:已存在的角色名,如果角色名中包含大写字母则需要使用双引号括起来。

  • new_name

    新角色名称。

    取值范围:字符串,要符合标识符的命名规范,且最多为63个字符。若超过63个字符,数据库会截断并保留前63个字符当做角色名称。当角色名中包含大写字母时,数据库会自动转换为小写字母,如果需要创建包含大写字母的角色名,则需要使用双引号括起来。

示例

  • 重命名用户组。
    1
    2
    3
    4
    5
    --创建用户test。
    gaussdb=# CREATE ROLE test PASSWORD '********';
    
    --修改用户名,等效于ALTER ROLE RENAME。
    gaussdb=# ALTER GROUP test RENAME TO tu_a1;
    
  • 向用户组中添加或者删除用户。
    --创建用户tu_a2、tu_a3。
    gaussdb=# CREATE ROLE tu_a2 PASSWORD '********';
    gaussdb=# CREATE ROLE tu_a3 PASSWORD '********';
    
    --向用户组tu_a1中添加用户tu_a2。
    gaussdb=# ALTER GROUP tu_a1 ADD USER tu_a2;
    
    --如上SQL等效于GRANT语句。
    gaussdb=# GRANT tu_a1 TO tu_a3;
    
    --查询。
    gaussdb=# SELECT groname, grolist FROM pg_group WHERE groname = 'tu_a1';
     groname |    grolist    
    ---------+---------------
     tu_a1   | {25590,25593}
    (1 row)
    gaussdb=# SELECT rolname, oid FROM pg_roles WHERE oid IN (25590,25593);
     rolname |  oid  
    ---------+-------
     tu_a2   | 25590
     tu_a3   | 25593
    (2 rows)
    
    --删除。
    gaussdb=# DROP ROLE tu_a1,tu_a2,tu_a3;