hive 安装_安装hive出现数据库密码无法登录问题

博客主要围绕Hive安装过程中遇到的问题展开。针对权限问题,通过修改权限解决;对于密码问题,在主机为master、账户和密码均为hive却无法登录的情况下,通过删除mysql.user表中部分数据、重新赋权限,最终成功执行schematool -dbType mysql –initSchema完成初始化。

问题一:权限问题

e39f97f90f93d42cc33dacaa52489cf7.png

解决:修改权限

b898cfdd947f63842962d28a928212ee.png

问题二:密码问题

190e2a7d812e51ece184b1b1076a712b.png

我的主机是master 账户是hive 密码是hive

749585eef230a9335a7dbf662bb6de85.png
cff697ce14d287696214cc5763ef5960.png

用密码登录无法登录

a156a2a25a66751647879db883a1bbec.png

我们检查一下

select user,host,password from mysql.user;

6dadd81e50ae8b3a0fe8f535347944fe.png

我们删除这里面的一些数据,然后重新赋权限

(1) 删除用户为空的

use mysql

select host,user from user;

24c2c8bd04ffefab0b9b7d036f581c48.png

delete from user where user=' ';

commit;

select host,user from user;

8388184ac9b7a1d04accd85d32c3c8d7.png

(2) 删除localhost和127.0.0.1

delete from user where host='127.0.0.1';

delete from user where host='localhost';

commit;

select host,user from user;

e52de5d82f8cc575be874d0feab132f3.png

删除hive用户

delete from user where user='hive';

select host,user from user;

4e646be77c015fe4ce28836b47351522.png

grant all privileges on hive.* to hive@'%' identified by 'hive' with grant option;

grant all privileges on hive.* to hive@'master' identified by 'hive' with grant option;

grant all privileges on hive.* to hive@'localhost' identified by 'hive' with grant option;select host,user from user;

f82b90a44d255c22f82ce430aded497b.png

再次执行schematool -dbType mysql –initSchema成功初始化

fdd6fc3a350e1791fad31fff978dbe4a.png
<think>我们正在讨论Hive元数据表HIVE_LOCKS,用户询问该表位于Hive的哪个数据库中。 根据引用[1]和引用[4]: 引用[1]提到Hive元数据默认存放在HDFS上,但这里指的是表数据的位置,而元数据(如库表结构)存储在metastore中(通常是MySQL或Derby等关系型数据库)。 引用[4]给出了HIVE_LOCKS表的建表语句,这是元数据表的结构,说明它存在于Hive的元数据库中。 注意:Hive的元数据库(Metastore Database)是一个关系型数据库(如MySQL),它存储了Hive的元数据信息(如表的结构、分区、锁信息等)。而HIVE_LOCKS表就是在这个元数据库中,并不是在Hive的数据仓库(HDFS目录)中。 因此,HIVE_LOCKS表位于Hive的元数据库中(Metastore Database)。具体数据库名取决于配置,默认的元数据库名通常是"metastore",但也可以由用户配置。 需要说明的是,用户通常不会在Hive CLI中直接查询这个表(因为它不在Hive的数据仓库中),而是通过连接数据库(如MySQL)来查询。 另外,引用[2]中提到了使用Hive命令`SHOW LOCKS`来查看锁信息,这个命令实际上就是查询了元数据库中的HIVE_LOCKS表(或其视图),但用户无需知道具体数据库。 所以,回答应该是:HIVE_LOCKS表位于Hive的元数据库(Metastore)中,而不是在Hive的数据仓库(即Hive中创建的数据库)中。 但是,用户可能想知道如何访问这个表?需要连接数据库(如MySQL)并选择相应的数据库(如metastore),然后查询HIVE_LOCKS表。 步骤: 1. 确定元数据库的类型(如MySQL)和连接信息(URL、用户名、密码)。 2. 使用数据库客户端连接数据库。 3. 切换到元数据库(如metastore)。 4. 执行SQL:`SELECT * FROM HIVE_LOCKS;` 注意:不同版本的Hive数据库结构可能略有不同,但表名通常是`HIVE_LOCKS`。 另外,引用[3]提到了关闭锁机制的配置,如果关闭了锁机制,则这个表中不会有数据。 总结回答: 明确告诉用户:HIVE_LOCKS表位于Hive数据库中,该元数据库通常是MySQL等关系型数据库,而不是Hive中通过`USE database`切换的数据库。 同时,生成相关问题。 </think>### HIVE_LOCKS表所在的数据库位置详解 #### 核心结论 **HIVE_LOCKS表位于Hive的元数据库(Metastore Database)中**,而非Hive数据仓库(如HDFS的`/user/hive/warehouse`)。元数据库通常采用MySQL、PostgreSQL等关系型数据库存储[^1][^4]。 --- #### 具体位置说明 1. **元数据库 vs 数据仓库** - **元数据库**:存储Hive的库/表结构、锁信息、分区等元数据(如`HIVE_LOCKS`表) - **数据仓库**:存储实际表数据(默认在HDFS的`/user/hive/warehouse`[^1]) 2. **访问路径** | 组件 | 默认名称/位置 | 包含内容 | |---------------|-----------------------------------|-------------------| | 元数据库 | 配置的数据库(如MySQL的`metastore`库) | `HIVE_LOCKS`表结构[^4] | | Hive数据仓库 | HDFS路径`/user/hive/warehouse` | 表数据文件 | 3. **验证方法** ```sql -- 连接到元数据库(如MySQL) USE metastore; -- 根据实际配置的库名 SHOW TABLES LIKE 'HIVE_LOCKS'; -- 确认表存在 DESC HIVE_LOCKS; -- 查看表结构(与引用[4]一致) ``` --- #### 操作注意事项 1. **查询权限** 需直接访问元数据库(如MySQL),而非通过Hive CLI。需具备数据库操作权限。 2. **配置关系** - 元数据库连接信息由`hive-site.xml`中的参数控制: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://your-metastore-db/metastore</value> </property> ``` - 数据仓库路径由`hive.metastore.warehouse.dir`配置[^1] 3. **替代查询方式** 若无法直连元数据库,可通过Hive命令间接获取锁信息: ```sql SHOW LOCKS; -- 查看当前锁(底层访问HIVE_LOCKS表)[^2] ``` > **关键区别**: > - `SHOW LOCKS`命令返回锁信息的**快照视图** > - 直接查询`HIVE_LOCKS`表获取**完整元数据**[^4] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值