
# SET ROLE
#### 功能描述
设置当前会话的当前用户标识符。
#### 注意事项
- 当前会话的用户必须是指定的rolename角色的成员，但系统管理员可以选择任何角色。
- 使用这条命令，它可能会增加一个用户的权限，也可能会限制一个用户的权限。如果会话用户的角色有INHERITS属性，则它自动拥有它能SET ROLE变成的角色的所有权限；在这种情况下，SET ROLE实际上是删除了所有直接赋予会话用户的权限，以及它的所属角色的权限，只剩下指定角色的权限。另一方面，如果会话用户的角色有NOINHERITS属性，SET ROLE删除直接赋予会话用户的权限，而获取指定角色的权限。
 
#### 语法格式
- 设置当前会话的当前用户标识符。
  ```
  SET [ SESSION | LOCAL ] ROLE role_name PASSWORD 'password';
  ```
  
- 重置当前用户标识为当前会话用户标识符。
  ```
  SET ROLE = DEFAULT;
  ```
  
 
#### 参数说明
- **SESSION**
  声明这个命令只对当前会话起作用，此参数为缺省值。
  
- **LOCAL**
  声明该命令只在当前事务中有效。
  
- **role_name**
  取值范围：已存在的角色名，角色名要求详见[•role_name](https://support.huaweicloud.com/distributed-m-comp-devg-v8-gaussdb/gaussdb-81-0074.html#ZH-CN_TOPIC_0000002558925203__zh-cn_topic_0000002526893544_zh-cn_topic_0000001736086472_zh-cn_topic_0283136858_zh-cn_topic_0237122112_zh-cn_topic_0059778189_ldaa273d86f824d5cb105bb3f8f3301e5)。
  
- **password**
  角色的密码。要求符合密码的命名规则。不支持直接使用密文密码。
  
 
#### 示例
```
--创建角色paul。
m_db=# CREATE ROLE paul IDENTIFIED BY '********';
--设置当前用户为paul。
m_db=# SET ROLE paul PASSWORD '********';
--查看当前用户。
m_db=# SELECT CURRENT_USER;
--重置当前用户。
m_db=# SET role = DEFAULT;
--删除用户。
m_db=# DROP USER paul;
```
