
# 配置仅Hive管理员用户能创建库和在default库建表
#### 操作场景
默认情况下，具有创建Hive表权限的用户，能在Hive客户端创建数据库及在default库中建表。Hive支持配置仅有Hive管理员可以创建库和在default库中建表，其他用户需通过Hive管理员授权才可使用库。
#### 约束与限制
- 本章节操作不适用于集群未启用Kerberos认证（普通模式）且Hive未启用Ranger鉴权的场景。
- 开启本功能之后，会限制普通用户新建库和在default库新建表。请充分考虑实际应用场景，再决定是否做出调整。
- 由于对执行用户做了限制，使用非管理员用户执行建库、表脚本迁移、重建元数据操作时需要特别注意，防止错误。
 
#### ACL鉴权场景操作步骤
1. 登录FusionInsight Manager页面，选择"集群 \> 服务 \> Hive \> 配置 \> 全部配置"。
2. 选择"HiveServer（角色） \> 自定义"，对参数文件"hive-site.xml"添加自定义参数，设置"名称"为"hive.allow.only.admin.create"，"值"为"true"，配置仅Hive管理员用户能创建库和在"default"库中创建表。
3. MRS 3.6.0-LTS之前版本，单击"保存"保存配置。单击"实例"，勾选所有Hive实例，选择"更多 \> 重启实例"，输入当前用户密码，单击"确定"重启所有Hive实例。 
   MRS 3.6.0-LTS及之后版本，单击"保存"保存配置，等待界面提示"操作成功"，单击"完成"，配置已修改。该参数动态生效，不需要重启Hive服务。
   
   
4. 是否需要在Spark/Spark2x客户端中启用此功能？ 
   - 是，执行[5]。
   
   - 否，操作结束。
   
   
   
   

5. 选择"集群 \> 服务 \> Spark \> 配置 \> 全部配置"，在左侧导航栏选择"SparkResource2x（角色） \> 自定义"和"JDBCServer2x（角色） \> 自定义"，对参数文件"hive-site.xml"添加自定义参数，设置"名称"为"hive.allow.only.admin.create"，"值"为"true"。
6. 单击"保存"保存配置。单击"实例"，勾选所有Spark2x实例，选择"更多 \> 重启实例"，输入当前用户密码，单击"确定"重启所有实例。
7. 重新下载并安装Spark/Spark2x客户端。
8. 以在Hive客户端使用此功能为例进行演示。 
   1. 以客户端安装用户，登录安装客户端的节点。
   
   2. 执行以下命令切换到客户端安装目录，配置环境变量并认证用户。
      1. 切换到客户端安装目录：
         ```
         cd /opt/hadoopclient
         ```
         
      
      2. 配置环境变量：
         ```
         source bigdata_env
         ```
         
      
      3. 认证用户，该用户具有创建Hive表的权限，集群未启用Kerberos认证（普通模式）请跳过此步骤：
         ```
         kinit 组件业务用户
         ```
         例如：
         ```
         kinit test
         ```
         
       
   
   3. 执行以下命令登录Hive客户端：
      ```
      beeline
      ```
      
   
   4. 执行以下命令创建数据库和在"default"数据库中创建表： 创建数据库：
      ```
      create database test;
      ```
      命令执行后报错仅具有管理员权限的用户支持创建数据库：
      图1创建数据库报错   
      ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002341012698.png "点击放大")
      创建表：
      ```
      create table test(name string);
      ```
      命令执行后报错仅具有管理员权限的用户支持在"default"数据库中创建表：
      图2创建表报错   
      ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002341020576.png "点击放大") 
   
   5. 为用户绑定具有Hive管理员权限的角色，具体操作请参见[创建Hive用户并绑定角色](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0949.html)。
   
   6. 用户权限设置成功后，重新在Hive客户端创建数据库或在"default"数据库中创建表即可。
   
   
   
   
 
#### Ranger鉴权场景操作步骤
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 执行此操作后，将限制普通用户创建库表、**use**切换default库和其他用户的数据库，已存在的自己创建的数据库、表仍可正常使用。
- 在Ranger页面为普通用户授权后仍可创建库表、**use**切换数据库。
- 对接LakeFormation场景不支持此功能。
 
1. 使用**admin**用户登录Manager页面，选择"集群 \> 集群属性"，查看并记录集群的"认证模式"。
2. 选择"集群 \> 服务 \> Ranger"，单击"Ranger Web UI"右侧的超链接登录Ranger WebUI页面。 
   - 如果查看到的认证模式为"安全模式"，**admin** 用户在Ranger中的用户类型为"User"，只能查看Access Manager和Security Zone页面。
     需单击页面右上角的用户名，在下拉列表中单击"Log Out"退出当前用户，使用**rangeradmin** 用户重新登录Ranger WebUI页面，再执行[3]。
     
   
   - 如果查看到的认证模式为"普通模式"，**admin** 用户在Ranger中的用户类型为"Admin"，直接执行[3]。
   
   
   
   
3. 在首页中单击"HADOOP SQL"区域的组件插件名称如"Hive"。
4. 单击"all - database"策略所在行的修改按钮，在"Allow Conditions"区域，删除"Select Group"为"public"且"Permissions"为"create"的权限控制规则，单击"Save"保存策略。 
   图3删除数据库的权限控制规则   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002546898341.png "点击放大")
   
   
5. 单击"default database tables columns"策略所在行的修改按钮，在"Allow Conditions"区域，删除"Select Group"为"public"且"Permissions"为"create"的权限控制规则，单击"Save"保存策略。 
   图4删除Hive默认数据库、表、列的权限控制规则   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002546978349.png "点击放大")
   
   
6. 等待1分钟Hive组件同步修改策略后，配置仅Hive管理员用户能创建库和在default库建表功能即会生效。
 
