使用JDBC连接Mysql数据库时,出现Access denied for user报错解决办法
问题描述
在使用idea的过程中,用jdbc代码连接mysql数据库时,出现如下的报错,我的版本是5.6
error 1045 (28000): access denied for user 'learn'@'localhost' (using password: yes)
解决过程
这个问题还挺常见,网上有很多的解决办法,我总结一下:
- 修改密码
- 修改my.in/my.cnf配置文件
- 删除user表中的空白用户
最终结果
最开始我也以为是密码的格式问题,直到我改了至少5次密码之后,发现没有起作用,我便放弃了这个办法,因为问题不是在这个地方。
第二种方法,没有试过,直觉告诉我不是这个问题。(~ ̄▽ ̄)~
于是第三个方法成为首选,而且网上只有很少的帖子在讨论这种方法,最开始是有个博主发现国外的某论坛有相同的问题,解决办法是删除user表中一个匿名账户,也可以说是空账户。造成无法连接的原因是mysql优先匹配了该匿名空账户,导致你不论输入的密码是否正确,都无法连接mysql。
参照该说法,我去查询了自己的user表,发现果然如此,有一个空账户,于是我将该账户用以下命令删除:
Delete FROM user Where User='' and Host='localhost';
如果是其他版本需要选择合适的语法删除用户,不然会报错
完成这一步后,关闭mysql后重新启动mysql,直接在cmd上登陆,没有问题可以进入了。
至此,问题完美解决,累了我一下午。