前几天学习springboot整合mybatis的时候遇到了这个mysql拒绝访问的问题:
The error occurred while executing a query
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password: YES)
给我搞了两天多终于解决了,期间看了无数篇(至少二三十篇是有了)博客,分享一下其他博客的方法以及我自己最终的解决方法:
1.配置文件的问题
在username和password多了个空格,或者username使用成了user导致用户变成你自己的用户而不是root,还有password要加单引号双引号之类的我也全部都试过一遍了但是也都没有解决,我自己最终的配置是这样的。
端口为3308是因为3306已经被占用了,可能是之前的其他数据库在用。我一度怀疑一开始的这个错就是端口的问题,但是这个问题是我最后才发现的。
2.用户密码错误的问题
需要重置mysql的用户密码,可以自行百度如何重置,这里不多赘述,但是我重置完密码还是拒绝访问。
3.什么用户不能远程连接和权限不足?(大概是这样吧,具体的叫法我也不是很清楚)
然后在mysql里面给予了root全部的权限,把host也改为全部都可以连接。结果,还是不行,可以自行尝试一下,我看其他博客还是有很多人是因为这个导致的。对了!!!说明一下,mysql8.0往上和mysql5.多的创建用户语法不太一样,要分开来搜索。8.0的用不了5.多的权限赋予语句,这个也搞了我很久。
以上这些方法都是我这两天找的所有办法,反正对我一点作用都没有。
那么最后,我自己的解决办法。
说来也非常奇怪,我昨天晚上想是不是mysql出了问题,我自己本身的mysql版本是8.0.15好像,然后我卸载完之后又去重新下了一个8.0.30的还是同样的错误。最后,我将mysql版本换回了5.7.35,端口号也从3306改成了3308,一测试,woc!!!终于能连上数据库了,这是昨天打印出来的。
总结一下,可能真的是端口的问题,如果不想换mysql版本可以尝试改一下端口,因为端口冲突可能导致无法连接数据库。对了,记得把mysql的用户密码过期策略改成永不过期,不然可能用着用着就噶了。
这次我算是把所有坑都踩了一遍,心态已经快崩了,昨天看到测试的红条条变为绿条条(Test代码中,实际自己的代码没有这个东西)真的非常欣慰。
来源地址:https://blog.csdn.net/qq_45950279/article/details/126189550