
# 角色管理
Aura的权限管理模型，是一种典型的RBAC（基于角色的权限控制）的实现，将用户、角色、权限通过此模型管理起来。
角色是一组权限的集合：
- 按照数据库系统中承担的责任划分具有不同权限的角色。角色是数据库权限的集合，代表了一个用户或一组用户的行为约束。
- 通过**GRANT** 语句把角色授予用户后，用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。例如，可以为设计、开发和维护人员创建不同的角色，将角色**GRANT**授予给用户后，再向每个角色中的用户授予其所需数据的差异权限。在角色级别授予或撤销权限时，权限更改会对角色下的所有成员生效。
#### 查询角色
```
SELECT * FROM pg_show_roles();
```
#### 角色管理
- 创建角色
  ```
  CREATE ROLE role_name [ COMMENT 'comment_text' ];
  ```
  
- 删除角色
  ```
  DROP ROLE [ IF EXISTS ] role_name;
  ```
  
- 修改角色
  ```
  ALTER ROLE role_name COMMENT 'modify COMMENT';
  ```
  
- 角色关联用户
  - 修改用户关联角色
    ```
    ALTER USER user1 WITH ROLE role1;
    ```
    
  
  - 修改角色关联用户
    ```
    ALTER ROLE role1 ADD USER user1;
    ```
    
   
- 角色关联用户组
  - 修改用户组关联角色
    ```
    ALTER USER GROUP group1 WITH ROLE role1;
    ```
    
  
  - 修改角色关联用户组
    ```
    ALTER ROLE role1 ADD USER GROUP group1;
    ```
    
   
- 角色关联代理
  ```
  ALTER ROLE role1 ADD AGENT agent1;
  ```
  
- 移除关联
  - 移除角色关联的用户
    ```
    ALTER ROLE role1 DROP USER user1;
    ```
    
  
  - 移除角色关联的用户组
    ```
    ALTER ROLE role1 DROP USER GROUP group1;
    ```
    
  
  - 移除角色关联的代理
    ```
    ALTER ROLE role1 DROP AGENT agent1;
    ```
    
   
 
