
# 配置在Hive客户端使用用户名和密码认证连接HiveServer
#### 使用场景
在集群已启用Kerberos认证（安全模式）的场景中，在Hive客户端通过Kerberos认证方式连接HiveServer时，需要配置krb5.conf、keytab、hosts等文件，配置错误会导致认证失败，无法访问HiveServer。
MRS 3.6.0-LTS及之后版本，Hive支持在Hive客户端使用用户名和密码方式进行认证连接HiveServer，这种认证方式客户端无需提供Kerberos相关配置，操作简便且兼容Kerberos认证方式。
#### 约束与限制
- 仅集群已启用Kerberos认证（安全模式）支持此功能。
- 本章节操作不适用于使用HCatalog客户端和Python二次样例连接HiveServer的场景。
- 用于进行认证的用户必须为在Manager界面的"系统 \> 权限 \> 用户"中创建的用户。
- HiveServer基于ZooKeeper实现负载均衡，客户端连接HiveServer前会先访问ZooKeeper，因此Hive开启用户名和密码认证功能时ZooKeeper也需要开启此功能。
- 修改SSL参数后需要更新Hive客户端配置。
- 在防暴力破解场景下，密码输错指定次数后锁定机制是按照单个HiveServer实例计算的，默认允许输错5次密码后用户将会被锁定，即同一个用户连接任意一个HiveServer输错5次密码，该账号就会被锁定。如果是基于ZooKeeper实现负载均衡，客户端连接HiveServer前会先连接ZooKeeper，连接ZooKeeper时也是按照单个实例计算密码输入错误次数来锁定账号的，因此在这种场景下，首先会触发ZooKeeper的防暴力破解机制，然后才是Hive的防暴力破解机制。如果要修改Hive用户名和密码认证的防暴力破解相关参数，Hive和ZooKeeper组件的相关参数都需要修改。
 
#### 操作步骤
1. 登录Manager界面，选择"集群 \> 服务"，在服务列表中单击"Hive"进入概览页面，选择" 配置 \> 全部配置"。
2. 在全部配置界面右上角的搜索框中搜索"hive.basic.authentication.enable"，并修改该参数值为"true"，开启用户名和密码认证功能。
3. （可选）在搜索框中搜索[表1]中的参数，并根据实际需求配置参数值。
   
    表1Hive基于用户名和密码认证的参数配置 
   | 参数                                                 | 参数描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 默认取值  |
   |:---|:---|:---|
   | hive.basic.authentication.cache.lifecycle          | 开启用户名和密码认证功能时，用于设置认证成功后缓存认证信息的时间，单位为分钟。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 5m    |
   | hive.basic.authentication.failed.lock.time         | 开启用户名和密码认证功能时，用于设置账号被锁定时的时长，单位为分钟。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 5m    |
   | hive.basic.consecutive.authentication.failed.count | 开启用户名和密码认证功能时，对于单个HiveServer实例，如果密码连续输入错误达到指定次数，则该账号将被暂时锁定。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 5     |
   | hive.server2.use.SSL                               | 是否开启SSL通道加密，在使用用户名和密码认证功能时开启可以保障数据传输的安全性。 集群已启用Kerberos认证（安全模式）默认认证方式为Kerberos，使用SASL协议保障数据传输安全性可以不开启该参数。 说明： - 如果开启SSL通道加密功能，需要更新Hive客户端配置。  - 开启SSL通道加密后，不支持通过Python接口样例代码方式连接HiveServer。   | false |
      
   
   
4. 单击"保存"，在弹出窗口单击"确定"保存配置。
5. 单击"实例"，勾选所有HiveServer实例，选择"更多 \> 重启实例"，输入当前用户密码并单击"确定"重启HiveServer实例。
6. 在Manager首页，选择"集群 \> 服务"，在服务列表中单击"ZooKeeper"进入概览页面，选择" 配置 \> 全部配置"。
7. 在全部配置界面右上角的搜索框中搜索"basicAuthEnabled"，并修改该参数值为"true"，开启ZooKeeper用户名和密码认证功能。
8. 单击"保存"，在弹出窗口单击"确定"保存配置。
9. 单击"实例"，勾选所有ZooKeeper实例，选择"更多 \> 重启实例"，输入当前用户密码并单击"确定"重启ZooKeeper实例。
10. 登录安装Hive客户端的节点，执行以下命令登录Hive客户端： 
    执行以下命令，切换到客户端安装目录：
    ```
    cd 客户端安装目录
    ```
    执行以下命令配置环境变量：
    ```
    source bigdata_env
    ```
    执行以下命令登录Hive客户端：
    ```
    beeline -n ${username} -p
    按提示输入用户密码
    ```
    其中*${username}*为在Manager页面创建的业务用户名。
    
    
 
