找准原因,彻底解决java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

产生此情况一般有两种情况

1:账号密码写错,(相信大多数都不会犯这种低级错误)

2:权限问题

3:用户匹配问题

 

对应的解决方法:

一:略

二:权限问题,

增加用户所有权限,下面举例增加root用户的所有权限。

例:

1、进入mysql,创建一个新用户,将用户赋予远程登录操作数据库的权利。 

       格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码";

例如:grant all  privileges on *.* to root@"%" identified by "root";

赋予所有权限使用:all  privileges 。执行以后,会在数据库中的mysql.user表中添加一条用户记录,表示命令已经成功执行。

 

 

三:用户匹配问题

进入数据库
mysql>use mysql;
mysql>select host,user,password from user;查看是否类似下面的情况

找准原因,彻底解决java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)_第1张图片

如果有这样的,说明用户匹配错了。
可以用以下命令证明:
mysql>select user(),current_user();

找准原因,彻底解决java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)_第2张图片

可以看到两个用户不匹配。两个用户不同。

所以当我们用localhost登录的时候,就陪匹配到了::1这个host匹配中,就不需要密码,而我们用user=root,password=123去登陆。就登录不了。

如果还是不行。。。。。

在本地cmd,输入mysql -u root可以登录
mysql -u root -p123登录不了。这就能说明问题。

 

所以解决方法就是:删除其他的匹配host项。那么久只能匹配到%这个host项。

mysql>use mysql;
mysql>delete from user where host='::1';
mysql>delete from user where host='127.0.0.1'
mysql>delete from user where host='localhost'

那么将其他的都删除了,就可以匹配到这一项host
找准原因,彻底解决java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)_第3张图片

这样就能彻底解决该登录不了的问题了。!

你可能感兴趣的:(调错笔记)