问题简介:
本人近期在学习hadoop相关技术,在使用hive连接mysql数据库的时候,出现Access denied for user 'root'@'localhost' (using password:YES)的报错信息,截取如下:
Caused by: java.sql.SQLException: Access denied for user 'root'@'ericHost06' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1086)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:928)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4736)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1342)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2493)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2526)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2311)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
......
分析:
1、本人首先检查了hive-site.xml的配置,发现用户名和密码都是对的,为了验证重新设置的了mysql的用户名和密码,所以不是密码错误;
2、mysql的client连接正常,所以mysql安装的也没有问题,所以很有可能就是远程账户访问没有打开,但是本人之前已经设置了打开远程访问;
3、在mysql终端也运行了如下的程序,保证访问权限没有问题;
GRANT ALL PRIVILEGES ON hive.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES
但是我想到在进行mysql的设置的时候,在选择远程访问打不开之后还有一个是否删除什么表的选项,当时我是选择删除的,所以我重新输入命令行
/usr/bin/mysql_secure_installation 进入配置界面,重新配置,每个配置项如下:
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] n
... skipping.
Remove test database and access to it? [Y/n] n
... skipping.
Reload privilege tables now? [Y/n] Y
... Success!
在我重新设置完成后, hive客户端就可以正常使用了。所以我想或许就是红色标注的这一段影响了结果,为了验证我重新设定了一次,这次红色标注的选择Y
但是这次也是可以成功的。
结论:
至此,我的结论是,之前不成功就是密码没有重新修改 或者 远程没有打开 这两个问题导致的,只要输入/usr/bin/mysql_secure_installation 进入配置界面,然后选择重新修改密码,然后选择不禁止远程访问,就可以了。