
# 配置Hive对接LakeFormation支持show databases/tables鉴权
#### 操作场景
在Hive对接LakeFormation的场景中，用户在Hive客户端查看数据库、数据表列表，或者通过JDBC的getMetaData接口获取元数据信息时，默认会显示所有数据库和数据表。通过调整Hive的配置参数，支持仅显示当前用户有权限访问的数据库和表，其他未被授权的库表将不再展示。
#### 约束与限制
- 默认所有Hive客户端用户都可以创建数据库和表，配置此功能后会收回默认创建权限，需要授权后才能创建数据库和表。
- 该章节内容仅适用于MRS 3.6.0-LTS.1及之后版本。
 
#### 操作步骤
**对接LakeFormation后，配置Hive** **只展示当前用户有权限的库表**。
1. 使用**admin**用户登录Manager页面，选择"集群 \> 服务 \> Hive \> 配置 \> 全部配置"，在搜索框中搜索"hive-ext.skip.ranger.showtables.auth"，修改值为"false"，以实现show语句执行结果仅展示当前用户有权限的库表。
2. 单击"保存"保存配置。单击"实例"，在实例列表中勾选所有HiveServer实例，选择"更多 \> 重启实例"，输入当前用户密码并单击"确定"重启HiveServer实例。
3. 单击"概览"，在页面右上角单击"更多"，在下拉框中查看"启用Ranger鉴权"是否置灰。 
   - 是，Hive已启用Ranger鉴权，执行[4]。
   
   - 否，Hive未启用Ranger鉴权，执行[9]。
   
   
   
   
4. 选择"集群 \> 集群属性"，查看并记录集群的"认证模式"。
5. 选择"集群 \> 服务 \> Ranger"，单击"Ranger Web UI"右侧的超链接登录Ranger WebUI页面。 
   - 如果[4]查看到的认证模式为"安全模式"，**admin** 用户在Ranger中的用户类型为"User"，只能查看Access Manager和Security Zone页面。
     需单击页面右上角的用户名，在下拉列表中单击"Log Out"退出当前用户，使用**rangeradmin** 用户重新登录Ranger WebUI页面，再执行[6]。
     
   
   - 如果[4]查看到的认证模式为"普通模式"，**admin** 用户在Ranger中的用户类型为"Admin"，直接执行[6]。
   
   
   
   
6. 在首页中单击"HADOOP SQL"区域的组件插件名称如"Hive"。
7. 单击"all - database"策略所在行的修改按钮，在"Allow Conditions"区域，删除"Select Group"为"public"且"Permissions"为"Create"的权限控制规则，单击"Save"保存策略。 
   图1删除数据库的权限控制规则   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002554842703.png "点击放大")
   
   
8. 单击"default database tables columns"策略所在行的修改按钮，在"Allow Conditions"区域，删除"Select Group"为"public"且"Permissions"为"Create"的权限控制规则，单击"Save"保存策略。 
   图2删除Hive默认数据库、表、列的权限控制规则   
   ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002523802774.png "点击放大")
   
   
**配置Hive** **只展示当前用户有权限的库表功能验证。**
9. 在Manager首页，选择"系统 \> 权限 \> 用户"，创建两个Hive用户，例如"test"和"test1"，且用户都属于"hive"和"hadoop"用户组。
10. 使用客户端安装用户登录Hive客户端所在节点，执行以下命令登录Hive客户端，以"test"用户为例。
    
    - 集群为安全模式时，执行以下命令进行用户认证并登录Hive客户端： 配置环境变量：
      ```
      source 客户端安装目录/bigdata_env
      ```
      认证用户：
      ```
      kinit test
      ```
      登录Hive客户端：
      ```
      beeline
      ```
      
    
    
    
    - 集群为普通模式时，执行以下命令登录Hive客户端： 配置环境变量：
      ```
      source 客户端安装目录/bigdata_env
      ```
      登录Hive客户端：
      ```
      beeline -n test
      ```
      
    
    
    
    
11. 执行以下命令创建Hive数据库和表： 
    创建表"test_tbl_2026"：
    ```
    create table test_tbl_2026(a string);
    ```
    创建数据库"test_2026"：
    ```
    create database test_2026;
    ```
    
    
12. 参考[10]使用"test1"用户登录Hive客户端，执行以下命令查看"test"用户创建的数据库和表：
    
    查看数据库：
    ```
    show databases like 'test_*';
    ```
    查看表：
    ```
    show tables like 'test_tbl*';
    ```
    查询无结果，未授权的数据库和表"test1"用户不可见。
    
    
 
