
# ALTER ROLE
#### 功能描述
修改角色属性。
#### 注意事项
无。
#### 语法格式
- 修改角色的权限。
  ```
  ALTER ROLE role_name [ [ WITH ] option [ ... ] ];
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002526899108.png "点击放大")
  - 其中权限项子句option为：
    ```
    {CREATEDB | NOCREATEDB}
        | {CREATEROLE | NOCREATEROLE}
        | {INHERIT | NOINHERIT}
        | {AUDITADMIN | NOAUDITADMIN}
        | {SYSADMIN | NOSYSADMIN}
        | {MONADMIN | NOMONADMIN}
        | {OPRADMIN | NOOPRADMIN}
        | {POLADMIN | NOPOLADMIN}
        | {USEFT | NOUSEFT}
        | {LOGIN | NOLOGIN}
        | {REPLICATION | NOREPLICATION}
       
        | {PERSISTENCE | NOPERSISTENCE}
        | CONNECTION LIMIT connlimit
        | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' [EXPIRED] | DISABLE | EXPIRED }
        | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' | EXPIRED ] | DISABLE }
        | VALID BEGIN 'timestamp'
        | VALID UNTIL 'timestamp'
        | RESOURCE POOL 'respool'
        | USER GROUP 'groupuser'
        | PERM SPACE 'spacelimit'
        | TEMP SPACE 'tmpspacelimit'
        | SPILL SPACE 'spillspacelimit'
        | NODE GROUP logic_cluster_name
        | ACCOUNT { LOCK | UNLOCK }
        | PGUSER
    ```
    ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002527059062.png "点击放大")
    
   
- 修改角色的名称。
  ```
  ALTER ROLE role_name 
      RENAME TO new_name;
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002558058951.png "点击放大")
  
 
- 锁定或解锁。
  ```
  ALTER ROLE role_name 
      ACCOUNT { LOCK | UNLOCK };
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002527059064.png "点击放大")
  

- 设置角色的配置参数。
  ```
  ALTER ROLE role_name [ IN DATABASE database_name ]
      SET configuration_parameter {{ TO | = } { value | DEFAULT } | FROM CURRENT};
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002558058947.png "点击放大")
  
- 重置角色的配置参数。
  ```
  ALTER ROLE role_name
      [ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
  ```
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/figure/zh-cn_image_0000002526899106.png "点击放大")
  
#### 参数说明
- **role_name**
  现有角色名。
  取值范围：已存在的角色名，如果角色名中包含大写字母则需要使用双引号括起来。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  当前不支持对重分布资源管控对象redisuser进行RENAME TO操作，也不支持将其他角色RENAME TO redisuser。
  
- **IN DATABASE database_name**
  表示修改角色在指定数据库上的参数。
  
- **SET configuration_parameter** **{{ TO \| = } { value \| DEFAULT } \| FROM CURRENT}**
  设置角色的参数。ALTER ROLE中修改的会话参数只针对指定的角色，且在下一次该角色启动的会话中有效。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  当前版本不支持设置用户级别参数。
  取值范围：
  configuration_parameter和value的取值请参见[SET](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0684.html#ZH-CN_TOPIC_0000002558946083)。
  DEFAULT：表示清除configuration_parameter参数的值，configuration_parameter参数的值将继承本角色新产生的SESSION的默认值。
  FROM CURRENT：取当前会话中的值设置为configuration_parameter参数的值。
  
- **RESET {configuration_parameter\|ALL}**
  清除configuration_parameter参数的值。与SET configuration_parameter TO DEFAULT的效果相同。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  当前版本不支持重置用户级别参数。
  取值范围：ALL表示清除所有参数的值。
  
- **ACCOUNT LOCK \| ACCOUNT UNLOCK**
  - ACCOUNT LOCK：锁定账户，禁止登录数据库。
  
  - ACCOUNT UNLOCK：解锁账户，允许登录数据库。
   
- **PGUSER**
  当前版本不允许修改角色的PGUSER属性。
  
- **{PASSWORD\|IDENTIFIED BY}** **'password'**
  重置或修改用户密码。除了初始用户外其他管理员或普通用户修改自己的密码需要输入正确的旧密码。只有初始用户、三权分立关闭时的系统管理员（sysadmin）或拥有创建用户（CREATEROLE）权限的用户才可以重置普通用户密码，无需输入旧密码。初始用户可以重置系统管理员的密码，系统管理员不允许重置其他系统管理员的密码。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  修改密码可能导致业务断链，请谨慎操作。
  
- **EXPIRED**
  设置密码失效。只有初始用户、系统管理员（sysadmin）或拥有创建用户（CREATEROLE）权限的用户才可以设置用户密码失效，其中系统管理员只有在三权分立关闭时，才可以设置自己或其他系统管理员密码失效。不允许设置初始用户密码失效。
  密码失效的用户可以登录数据库但不能执行查询操作，只有修改密码或由管理员重置密码后才可以恢复正常查询操作。
  
其他参数请参见CREATE ROLE的[参数说明](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0560.html#ZH-CN_TOPIC_0000002527826210__zh-cn_topic_0000002527056272_zh-cn_topic_0059778189_s5a43ec5742a742089e2c302063de7fe4)。
#### 示例
```
--创建角色test_role。
gaussdb=# CREATE ROLE test_role PASSWORD '********';
 
--设置角色test_role可以登录数据库。
gaussdb=# ALTER ROLE test_role WITH LOGIN;
--创建数据库。
gaussdb=# CREATE DATABASE testdb1;
--锁定角色test_role。
gaussdb=# ALTER ROLE test_role ACCOUNT LOCK;
--给锁定锁定的角色解锁。
gaussdb=# ALTER ROLE test_role ACCOUNT UNLOCK;
--修改角色test_role密码。
gaussdb=# ALTER ROLE test_role PASSWORD '********';
--将角色test_role重命名为test_role2。
gaussdb=# ALTER ROLE test_role RENAME TO test_role2;
--修改角色test_role2为系统管理员。
gaussdb=# ALTER ROLE test_role2 SYSADMIN;
--删除。
gaussdb=# DROP ROLE test_role2;
gaussdb=# DROP DATABASE testdb1;
```
#### 相关链接
[CREATE ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0560.html#ZH-CN_TOPIC_0000002527826210)，[DROP ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0610.html#ZH-CN_TOPIC_0000002527986180)，[SET ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0686.html#ZH-CN_TOPIC_0000002527826276)
