# 创建DWS数据库用户和角色
DWS集群创建后如果所有业务共用dbadmin账号，可能存在误操作影响整个集群的安全风险，因此需要通过创建独立角色和用户实现权限隔离。DWS支持通过控制台进行创建DWS数据库用户和角色，无需直接编写SQL代码。在创建用户前，可以先创建角色，即先预置一些常用角色，例如拥有创建数据库的角色，再创建用户，在创建用户的过程将预先创建好的角色授权予该用户。其中角色是拥有数据库对象和权限的实体，在创建角色前可根据业务实际需求创建相应的业务数据库（DWS默认的数据库gaussdb一般不作为客户的业务数据库使用，且考虑业务隔离，建议为不同业务创建独立的数据库）。
角色是一组权限的集合，用户和角色的关系，详情请参见[权限管理](https://support.huaweicloud.com/devg-dws/dws_04_0054.html)。
用户、角色和相应的权限列表支持导出和导入，详情参见[角色管理操作]和[数据库用户管理操作]。
#### 视频介绍
<video controls="controls" preload="none" id="object18878547192518" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/dws-video/1759113801114538781.mp4" title="创建用户和角色" poster="https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002656386757.png" height="313.0000" width="548.0000"></video>
#### 典型使用流程
首次创建DWS集群后，需使用系统管理员dbadmin首次连接gaussdb数据库，按以下顺序进行初始化配置：
图1创建用户典型流程   
![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002666051571.png)
**示例：**
- **新建业务场景**：公司新上线一个订单管理系统，需创建order_db数据库、order_admin角色（拥有订单表的增删改查权限）和order_user用户（授予order_admin角色）。
- **数据迁移场景**：将上游业务数据迁移到DWS时，需根据上游系统的用户和权限规划，在DWS中创建对应的数据库、用户和角色。
 
#### 约束和限制
- **尽量避免**所有业务使用同一个数据库用户运行，请按业务模块规划不同数据库用户。
- **不建议** 使用系统管理员（dbadmin）运行业务，不同模块业务请通过多用户和权限进行访问控制。
  ![](https://support.huaweicloud.com/mgtg-dws/public_sys-resources/caution_3.0-zh-cn.png)
  使用系统管理员运行业务存在安全风险，一旦误操作可能影响整个集群的数据和配置。请务必为不同业务模块创建独立的数据库用户，并遵循最小权限原则授权。
  
- DWS数据库自主开发过程中应遵守的设计规范参见[总体开发设计规范](https://support.huaweicloud.com/devg-dws/dws_04_0075.html)。
- 集群创建时自动生成的系统用户/角色不允许修改。
 
#### 新建数据库
支持通过DDL语法或通过SQL编辑器创建。
- DDL语法方式创建：创建语法参见[《SQL语法参考》](https://support.huaweicloud.com/sqlreference-dws/dws_06_0001.html)中的"CREATE DATABASE"语法章节。
- SQL编辑器方式创建：[使用SQL编辑器连接DWS集群](https://support.huaweicloud.com/mgtg-dws/dws_01_0815.html)。
 
#### 创建角色
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏中，选择**"集群 \> 集群列表"**。
3. 在集群列表中，单击指定集群的名称，进入**"集群详情"**页面。
4. 在上侧导航栏单击**"用户管理"**，进入用户管理页面。
5. 切换至**"角色列表"** 页签，单击**"创建角色"**，跳转至创建角色详情页面。
6. 完善常规配置角色信息，参数描述如下所示： 
    表1角色信息常规配置参数信息 
   | 参数名称 | 描述                                                                              |
   |:---|:---|
   | 角色名称  | 以字母开头，可以包含字母、数字、下划线，长度不超过63个字符。                                               |
   | 到期时间  | 设置该角色权限的到期截止时间。到期后，该角色的权限将自动失效，被授予该角色的用户将失去对应权限。如不设置则永不过期。                     |
   | 系统管理员  | 是否授予该角色系统管理员权限。拥有此权限的角色可执行所有数据库操作，包括管理其他用户、角色和数据库对象。**请谨慎授权**，日常业务角色不建议开启此权限。 |
   | 创建数据库 | 是否授予该角色创建数据库权限。                                                                |
   | 创建角色   | 是否授予该角色创建新用户/角色权限。                                                            |
   | 继承权限   | 是否自动继承该角色所属角色组的权限。**默认开启，不推荐关闭。**若关闭，该角色即使被授予了其他角色，也不会自动获得其权限，需手动逐项授权。        |
   | 描述     | 对创建的角色的补充说明，如角色用途、所属业务模块等，不超过500个字符。                                            |
      
   
   
7. 确认无误后，单击**"下一步"**。
8. 权限配置，配置该角色拥有的权限。 
   单击**"添加"** ，添加一条权限配置，**选择数据库对象类型以及对应的数据库对象。然后选择权限进行授权** ，确认无误后单击**"保存"** 。具体权限释义，请参见[《SQL语法参考》](https://support.huaweicloud.com/sqlreference-dws/dws_06_0001.html)中的"DCL语法 \> GRANT"章节。
   
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617505299.png "点击放大")
   
   
9. 授权完毕，单击**"立即创建"**。创建完成后返回角色列表查看创建的新角色。
 
#### 创建数据库用户
数据库用户支持通过DDL语法或通过DWS管理控制台创建。DDL语法请参见[《SQL语法参考》](https://support.huaweicloud.com/sqlreference-dws/dws_06_0001.html)中的"CREATE USER"语法章节。
#### 前提条件
请先确保集群状态为"可用"。
 #### 操作步骤
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏中，选择**"集群 \> 集群列表"**。
3. 在集群列表中，单击指定集群的名称，进入**"集群详情"**页面。
4. 在上侧导航栏单击**"用户管理"**，进入用户管理页面。
5. 在**"用户列表"** 页签，单击**"创建用户"**，跳转至创建用户详情页面。
6. 进入**"常规配置"** 页面，参数说明如下所示：
   
    表2用户信息常规配置参数说明 
   | 参数名称             | 描述                                                                                                                                                                                                                                                                                                                                                                                                         |
   |:---|:---|
   | 用户名称             | 以字母开头，可以包含字母、数字、下划线，长度不超过63个字符。                                                                                                                                                                                                                                                                                                                                                                           |
   | 密码                 | 用户登录数据库的密码，可以包含字母、数字、下划线及特殊字符，长度12\~32个字符。 - 密码至少包含大写字母、小写字母、数字和特殊字符四类中的三类，其中可输入的特殊字符为：(\~!?,.:;_(){}\[\]/\<\>@#%\^\&\*+\|\\=-)。  - 不能与用户名或倒序的用户名相同。   |
   | 连接数限制          | 该用户并发连接数据库的最大连接数，-1表示不限制。建议根据业务实际并发量合理设置，避免单个用户占用过多连接资源。                                                                                                                                                                                                                                                                                                                                                   |
   | 到期时间              | 设置该用户账号的有效期截止时间。到期后，该用户将无法登录数据库。如不设置则永不过期。                                                                                                                                                                                                                                                                                                                                                                  |
   | 逻辑集群（集群为逻辑集群参数） | 下拉框选择创建用户所属的逻辑集群。在物理集群模式下不显示该参数。逻辑集群概念请参见[DWS逻辑集群/计算组管理](https://support.huaweicloud.com/mgtg-dws/dws_01_0724.html)。                                                                                                                                                                                                                                                                                         |
   | 系统管理员             | 是否授予该用户系统管理员权限。拥有此权限的用户可执行所有数据库操作，包括管理其他用户、角色和数据库对象。**请谨慎授权**，日常业务用户不建议开启此权限。                                                                                                                                                                                                                                                                                                                               |
   | 创建数据库           | 是否授予该用户创建数据库权限。                                                                                                                                                                                                                                                                                                                                                                                              |
   | 创建角色             | 是否授予该用户创建新用户、角色权限。                                                                                                                                                                                                                                                                                                                                                                                         |
   | 继承权限             | 是否自动继承该用户所属角色组的权限。**默认开启，不推荐关闭。**若关闭，该用户即使被授予了角色，也不会自动获得其权限，需手动逐项授权。                                                                                                                                                                                                                                                                                                                                      |
   | 描述                | 对创建的用户的补充说明，如用户用途，所属业务模块等，不超过500个字符。                                                                                                                                                                                                                                                                                                                                                                      |
      
   
   
7. 确认无误后，单击**"下一步"**。
8. 进入**"角色配置"** 页面，选择需要对该用户授权的角色，确定后单击**"下一步"**。
9. 权限配置，对该用户授权角色后，如果还需要补充其他权限，可以单独配置。 
   单击**"添加"** ，添加一条权限配置，**选择数据库对象类型以及对应的数据库对象，然后选择权限进行授权** ，确认无误后单击**"保存"** 。具体权限释义，请参见[《SQL语法参考》](https://support.huaweicloud.com/sqlreference-dws/dws_06_0001.html)中的"DCL语法 \> GRANT"章节。
   
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587065716.png "点击放大")
   
   
10. 授权完毕，单击**"立即创建"**，创建完成后返回用户列表查看创建的新用户。
 
 #### 角色管理操作
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏中，选择**"集群 \> 集群列表"**。
3. 在集群列表中，单击指定集群的名称，进入**"集群详情"**页面。
4. 在上侧导航栏单击**"用户管理"**，进入用户管理页面。
5. 切换至**"角色列表"** 页签，可对已创建的角色执行以下操作。
   
   表3角色管理操作 
   | 操作入口    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|
   | 修改角色   | 在角色列表中选择指定角色，单击**"修改"** ，跳转至修改角色详情页面。授权完毕，单击**"保存"**完成修改。 - 修改角色信息，具体信息请参见[表1]。  - 权限配置，根据需要选择权限类型，单击操作列的**"编辑"** ，再在权限列单击**"修改"**对权限进行添加或移除。   |
   | 导出角色     | 在角色列表上方单击**"导出"** ，选择**导出条数** ，单击**"导出"**即可导出角色列表。                                                                                                                                                                                                                                                                                                                                                                                        |
   | 导出角色权限 | 在角色列表选择指定角色，单击**"导出权限"** ，在弹窗中输入**导出数据量** ，单击**"导出"**即可导出角色权限。                                                                                                                                                                                                                                                                                                                                                                            |
   | 删除角色   | 在角色列表中选择指定角色，单击**"删除"** ，弹出确认页面。单击**"确定"**删除角色。 删除操作前需先确认是否存在**未删除的数据库对象等依赖关系**，如果有的话请先删除关系，否则角色将删除失败。                                                                                                                                                                                                                                                                                       |
      
   
   
 
 #### 数据库用户管理操作
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏中，选择**"集群 \> 集群列表"**。
3. 在集群列表中，单击指定集群的名称，进入**"集群详情"**页面。
4. 在上侧导航栏单击**"用户管理"** ，进入用户管理页面。可对已创建的数据库用户执行以下操作。
   
   表4用户管理操作 
   | 操作入口  | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|
   | 修改用户    | 在用户列表中选择指定用户，单击**"修改"** ，跳转至修改用户详情页面。授权完毕，单击**"保存"**完成修改。 - 修改用户信息，具体信息请参见[表2]。  - 角色配置，修改需要对该用户授权的角色。  - 权限配置，选择权限类型后，单击操作列的**"编辑"** ，再在权限列单击**"修改"**对权限进行添加或移除。   |
   | 导出用户    | 在用户列表上方单击**"导出"** ，选择**导出条数** ，单击**"导出"**即可导出用户列表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 导出用户权限                             | 在用户列表选择指定用户，单击**"导出权限"** ，在弹窗中输入**导出数据量** ，单击**"导出"** 即可导出用户拥有权限列表。其中物理集群的dbadmin用户权限属于系统内置，则**"导出权限"**按钮置灰，不支持导出权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 导入用户权限                            | 在用户列表选择指定用户，选择**"更多 \> 导入权限"**，并指定对应权限文件，即可将权限导入到当前用户。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 删除用户 | 在用户列表选择指定用户，选择**"更多 \> 删除"** ，单击**"确定"**删除用户。 - 删除操作前需先确认是否存在**未删除的表等数据库对象依赖关系**，如果有的话请先删除关系，否则用户将删除失败。  - 如果勾选**"强制删除，自动解除依赖关系"**则当前用户名下的表、函数及其他数据库对象，将转移至管理员账号名下。                                                                                                                                                     |
      
   
   
 
#### 相关文档
- 创建角色：[CREATE ROLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0172.html)
- 创建用户：[CREATE USER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0186.html)
- 用户和角色：[用户和角色](https://support.huaweicloud.com/sqlreference-dws/dws_06_0502.html)
 
