您的位置:首页 > 编程语言 > Java开发

执行Hive语句报错:FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Access denied for user '

2017-10-19 22:56 639 查看
安装个Hive真不省心,各种问题。最近安装好Hive后执行Hive语句时碰到这样的错误:

hive> show databases;
FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Access denied for user 'root'@'localhost' (using password: YES)
NestedThrowables:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask


从字面看是root用户访问权限被拒绝。那么也就是以下两个原因造成的:

1、root用户本身的设置问题。

2、mysql权限访问问题。

首先排除原因2:看是否由于Mysql未对root用户设置访问权限造成的。

在Mysql进行授权:

打开mysql执行下面语句(第一个单引号中的root代表的是mysql的root用户,第三个单引号中是要输入的root用户的登录密码<我这里是初始登录密码为空>。)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;


之后再执行以下语句让授权生效:

FLUSH PRIVILEGES;


但是发现问题依旧存在。

接着再排除原因1:看是够是root用户的设置问题。

经过翻墙查找,总算发现了问题的原因:因为我的hive.site文件在配置访问mysql的用户和密码时出现了问题。



因为刚装的mysql,所以root的登录密码之前为空(这里有一个疑问:第一次配置的时候,我是把hive.site文件中root的密码设为空
4000
,而当时由于刚装mysql,其用户就是root,密码本身也就是空,但是为什么Hive仍然无法访问Mysql?仍会报以上的错误?)。

后来把root的密码更改为root之后,修改相关的hive.site文件后,hive总算可以正常的执行语句了。

关于如何更改mysql中用户的密码,这里也简单说一下:

1、先启动mysql

2、然后输入:mysql -u root -p 回车,以空密码登录。



3、选择数据库:use mysql;

修改密码:UPDATE user SET password=PASSWORD(‘123456’) WHERE user=’root’;

刷新:flush privileges;

退出:exit;

这样就完成了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐