
# ALTER USER
#### 功能描述
ALTER USER语句用于修改数据库用户的属性。
#### 注意事项
ALTER USER中修改的会话参数只针对指定的用户，且在下一次会话中有效。
#### 语法格式
- 修改用户的权限等信息。
  ```
  ALTER USER user_name [ [ WITH ] option [ ... ] ];
  ALTER USER user_name
      RENAME TO new_name;
  ALTER USER user_name [ IN DATABASE database_name ]
      SET configuration_parameter {{ TO | = } { value | DEFAULT }|FROM CURRENT};
  ALTER USER user_name
      [ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
  ```
  其中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
  ```
  
- 修改用户名。
  ```
  ALTER USER user_name 
      RENAME TO new_name;
  ```
  
 
- 修改与用户关联的指定会话参数值。
  ```
  ALTER USER user_name [ IN DATABASE database_name ]
      SET configuration_parameter {{ TO | = } { value | DEFAULT }|FROM CURRENT};
  ```
  
- 重置与用户关联的指定会话参数值。
  ```
  ALTER USER user_name 
      [ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
  ```
  
#### 参数说明
- **user_name**
  现有用户名。
  取值范围：已存在的用户名，如果用户名中包含大写字母则需要使用双引号括起来。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  当前不支持对重分布资源管控对象redisuser进行RENAME TO操作，也不支持将其他用户名RENAME TO redisuser。
  
- **new_password**
  新密码。
  密码规则如下：
  - 不能与当前密码相同。
  
  - 密码默认不少于8个字符。
  
  - 不能与用户名及用户名倒序相同。
  
  - 至少包含大写字母（A-Z），小写字母（a-z），数字（0-9），非字母数字字符（限定为\~!@#$%\^\&\*()-_=+\\\|\[{}\];:,\<.\>/?）四类字符中的三类字符。当密码中包含的字符不属于上述四种字符范围内时语句执行会报错。
  
  - 应当使用单引号将用户密码括起来。
  
  
  取值范围：字符串。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  修改密码可能导致业务断链，请谨慎操作。
  
- **old_password**
  旧密码。
  
- **ACCOUNT { LOCK \| UNLOCK }**
  - ACCOUNT LOCK：锁定账户，禁止登录数据库。
  
  - ACCOUNT UNLOCK：解锁账户，允许登录数据库。
   
- **PGUSER**
  当前版本不允许修改用户的PGUSER属性。
  
其他参数请参见[CREATE ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0560.html#ZH-CN_TOPIC_0000002527826210)和[ALTER ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0501.html#ZH-CN_TOPIC_0000002527986122)的参数说明。
![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
当前版本不支持设置用户级别参数。
#### 示例
```
--创建用户jim，登录密码为********。
gaussdb=# CREATE USER jim PASSWORD '********';
--创建数据库。
gaussdb=# CREATE DATABASE testdb1;
--修改用户jim的登录密码。
gaussdb=# ALTER USER jim IDENTIFIED BY '**********' REPLACE '********';
--锁定jim账户。
gaussdb=# ALTER USER jim ACCOUNT LOCK;
--解锁jim账户。
gaussdb=# ALTER USER jim ACCOUNT UNLOCK;
--修改用户名。
gaussdb=# ALTER USER jim RENAME TO lisa;
--删除用户。
gaussdb=# DROP USER lisa CASCADE;
```
#### 相关链接
[CREATE ROLE](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0560.html#ZH-CN_TOPIC_0000002527826210)，[CREATE USER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0575.html#ZH-CN_TOPIC_0000002559105917)，[DROP USER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0623.html#ZH-CN_TOPIC_0000002527986186)
