# ALTER ROLE
#### 功能描述
修改角色属性。包括：修改角色的名称、锁定/解锁角色以及权限等。
#### 语法格式
- 修改角色的权限
  ```
  ALTER ROLE role_name [ [ WITH ] option [ ... ] ];
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002764309592.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
      | PASSWORD EXPIRE INTERVAL 'time' DAY
  }
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002793788333.png "点击放大")
  
- 修改角色的名称
  ```
  ALTER ROLE role_name 
      RENAME TO new_name;
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002764469522.png "点击放大")
  
 
- 锁定或解锁角色
  ```
  ALTER ROLE role_name 
      ACCOUNT { LOCK | UNLOCK };
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002793708135.png "点击放大")
  

- 设置角色的配置参数
  ```
  ALTER ROLE role_name [ IN DATABASE database_name ]
      SET configuration_parameter {{ TO | = } { value | DEFAULT } | FROM CURRENT};
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002793708133.png "点击放大")
  
- 重置角色的配置参数
  ```
  ALTER ROLE role_name
      [ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
  ```
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/figure/zh-cn_image_0000002793788331.png "点击放大")
  
 #### 参数说明
- **role_name**
  现有角色名。
  取值范围：已存在的角色名，如果角色名中包含大写字母则需要使用双引号进行包裹。
  ![](https://support.huaweicloud.com/distributed-ref-v10-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}**
  设置角色的参数。
  ![](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  ALTER ROLE中修改的会话参数只针对指定的角色，当前版本不支持设置用户级别参数。
  取值范围：
  - configuration_parameter：取值请参见[SET](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0396.html)。
  
  - value：取值请参见[SET](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0396.html)。
  
  - 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-ref-v10-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）权限的用户才可以重置普通用户密码，无需输入旧密码。
  
  - 初始用户可以重置系统管理员的密码，系统管理员不允许重置其他系统管理员的密码。
  
  - 应当使用单引号或双引号将用户密码进行包裹。
   
- **EXPIRED**
  设置密码失效。
  - 只有初始用户、系统管理员（sysadmin）或拥有创建用户（CREATEROLE）权限的用户才可以设置用户密码失效，其中系统管理员只有在三权分立关闭时，才可以设置自己或其他系统管理员密码失效。
  
  - 不允许设置初始用户密码失效。
  
  - 密码失效的用户可以登录数据库但不能执行查询操作，只有修改密码或由管理员重置密码后才可以恢复正常查询操作。
   
- 其他参数请参见[CREATE ROLE](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0264.html)章节的[参数说明](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0264.html#ZH-CN_TOPIC_0000002764468456__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-ref-v10-gaussdb/gaussdb-08-0264.html)，[DROP ROLE](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0315.html)，[SET ROLE](https://support.huaweicloud.com/distributed-ref-v10-gaussdb/gaussdb-08-0398.html)
