Linux下连接Mysql出现:Access denied for user 'root'@'localhost' (using password:YES)的解决方法

时间:2021-11-11 21:35:46

      问题简介:

              本人近期在学习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  进入配置界面,然后选择重新修改密码,然后选择不禁止远程访问,就可以了。