
# 创建Hive用户并绑定角色
#### 操作场景
该任务指导MRS集群管理员在Manager创建Hive用户并绑定角色。Hive角色可设置Hive管理员权限以及Hive表的数据操作权限。
用户使用Hive并创建数据库需要加入**hive**组，不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限，可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。默认创建的数据库或表保存在HDFS目录"/user/hive/warehouse"。
#### 约束与限制
- 集群已启用Kerberos认证（安全模式）支持创建Hive角色，集群未启用Kerberos认证（普通模式）不支持创建Hive角色。
- 如果当前组件使用了Ranger进行权限控制，须基于Ranger配置相关策略进行权限管理，具体操作可参考[添加Hive的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1858.html)。
 
#### 前提条件
MRS集群管理员已明确业务需求。
 #### 创建Hive角色
MRS系统默认预置了部分角色，如果预置的角色不满意用户需求，可以参考该操作自定义创建角色。如果系统预置的角色满足要求则请跳过该操作。系统预置的角色及其权限说明请参见[MRS集群默认权限信息说明](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300031.html)。
1. 登录FusionInsight Manager，具体请参见[访问集群Manager](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2124.html)。
2. 选择"系统 \> 权限 \> 角色"。
3. 单击"添加角色"，输入"角色名称"和"描述"。
4. 设置角色"配置资源权限"。 
   - 设置HDFS目录的读和执行权限。
     - 选择"*待操作集群的名称* \> HDFS \> 文件系统 \> hdfs://hacluster/ \> user"，在"hive"的"权限"列，勾选"读"和"执行"。
     
     - 选择"*待操作集群的名称* \> HDFS \> 文件系统 \> hdfs://hacluster/ \> user \> hive"，在"warehouse"的"权限"列，勾选"读"和"执行"。
     
     - 选择"*待操作集群的名称* \> HDFS \> 文件系统 \> hdfs://hacluster/ \> tmp",在"hive-scratch"的"权限"列，勾选"读"和"执行"。
      
   
   - "Hive管理员权限"：Hive管理员权限。
   
   - "Hive读写权限"：Hive数据表管理权限，可设置与管理已创建的表的数据操作权限。
   
   
   具体配置操作请参见[表1]，其中：
   - Hive角色管理支持授予管理员权限、访问库、表和视图的权限。
   
   - Hive管理员权限不支持管理HDFS的权限。
   
   - 如果数据库中的表或者表中的文件数量比较多，在授权时可能需要等待一段时间。例如表的文件数量为1万时，可能需要等待2分钟。
   
   
    表1设置角色 
   | 任务场景                    | 角色授权操作                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|
   | 设置Hive管理员权限             | 在"配置资源权限"的表格中选择"*待操作集群的名称* \> Hive"，勾选"Hive管理员权限"。 用户绑定Hive管理员角色后，在每个维护操作会话中，还需要执行以下操作： 1. 以客户端安装用户，登录安装Hive客户端的节点。  2. 执行以下命令配置环境变量，例如，Hive客户端安装目录为"/opt/hiveclient"： ``` source /opt/hiveclient/bigdata_env ```   3. 执行以下命令认证用户： ``` kinit Hive业务用户 ```   4. 执行以下命令登录Hive客户端： ``` beeline ```   5. 执行以下命令更新Hive用户的管理员权限： ``` set role admin; ```    |
   | 设置在默认数据库中，查询其他用户表的权限    | 1. 在"配置资源权限"的表格中选择"*待操作集群的名称* \> Hive \> Hive读写权限"。  2. 在数据库列表中单击指定的数据库名称，显示数据库中的表。  3. 在指定表的"权限"列，勾选"查询"。                                                                                                                                                                                                                                                                                                                                                                                           |
   | 设置在默认数据库中，插入其他用户表的权限    | 1. 在"配置资源权限"的表格中选择"*待操作集群的名称* \> Hive \> Hive读写权限"。  2. 在数据库列表中单击指定的数据库名称，显示数据库中的表。  3. 在指定表的"权限"列，勾选"插入"。                                                                                                                                                                                                                                                                                                                                                                                                |
   | 设置在默认数据库中，导入数据到其他用户表的权限 | 1. 在"配置资源权限"的表格中选择"*待操作集群的名称* \> Hive \> Hive读写权限"。  2. 在数据库列表中单击指定的数据库名称，显示数据库中的表。  3. 在指定表的"权限"列，勾选"删除"和"插入"。                                                                                                                                                                                                                                                                                                                                                                                         |
   | 设置提交HQL命令到Yarn执行的权限     | 部分业务需要使用的HQL命令转化为MapReduce任务并提交到Yarn中执行，需要设置Yarn权限。例如运行的HQL使用了**insert** 、**count** 、**distinct** 、**group by** 、**order by** 、**sort by** 或**join**等语句的相关场景。 1. 在"配置资源权限"的表格中选择"*待操作集群的名称* \> Yarn \> 调度队列 \> root"。  2. 在"default"队列的"权限"列，勾选"提交"。                                                                                                                                                                                                                                                                                                                          |
      
   
   
5. 单击"确定"，返回"角色"页面。 
   角色创建完成后，绑定该角色的用户将拥有对应权限。
   
   
 
 #### 创建Hive用户并绑定角色
1. 登录FusionInsight Manager。
2. 选择"系统 \> 权限 \> 用户"。
3. 在用户列表上方，单击"添加用户"，配置如下参数。 
   - 用户名：自定义，例如"hiveuser"。
   
   - 用户类型：选择"人机"。
   
   - 密码、确认新密码：自定义用户密码。
   
   - 用户组：单击"添加"，选择用户组，例如选择"hive"，单击"确定"。
   
   - 主组：根据业务实际需要选择，例如"hive"。
   
   - 角色：单击"添加"，为用户绑定角色，例如"System_administrator"。 如果系统预置的角色不满足需求，可以参考[创建Hive角色]创建角色后在此处进行绑定。
     
   
   
   
   
4. 单击"确定"完成用户创建。 
   "人机"用户创建成功后，通常需要修改初始密码后才可以正常使用，可以使用该用户登录FusionInsight Manager，按照界面提示重置密码即可。
   
   
5. 使用新创建的用户登录Hive客户端，即可执行创建、修改、删除Hive表等相关操作，具体操作请参见[快速使用Hive进行数据分析](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0442.html)。
 
#### 相关文档
- 如需查看或修改相关Hive用户密码有效期，具体操作请参见[集群内用户密码的过期时间如何查询和修改？](https://support.huaweicloud.com/mrs_faq/mrs_03_1249.html)。
- 如需给集群内用户添加租户管理权限，具体操作请参见[如何给集群内用户添加租户管理权限？](https://support.huaweicloud.com/mrs_faq/mrs_03_1035.html)。
- 如需查看其他用户创建的Hive表，需为该用户赋予查看对应表的权限，具体操作请参见[用户A如何查看用户B创建的Hive表？](https://support.huaweicloud.com/mrs_faq/mrs_03_1082.html)。
- Manager创建的用户名过长导致下载认证凭据失败，处理该故障的具体操作请参见[用户名过长导致下载认证凭据失败](https://support.huaweicloud.com/trouble-mrs/mrs_03_0706.html)。
- 更多Hive权限故障案例处理具体操作请参见[Hive故障排除](https://support.huaweicloud.com/trouble-mrs/mrs_03_0243.html)。
 
