找准原因,彻底解决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;查看是否类似下面的情况

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

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

所以当我们用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

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

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值