Spring Boot启动报Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using pas

为了存储emoji,将原本旧版本的mysql卸载了,重新装新版mysql,结果数据库安装调试好了之后,突然发现之前的Spring Boot项目启动报错了。错误如下:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_111]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_111]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_111]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_111]
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) ~[mysql-connector-java-5.1.46.jar:5.1.46]
	at com.mysql.jdbc.Util.getInstance(Util.java:408) ~[mysql-connector-java-5.1.46.jar:5.1.46]
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) ~[mysql-connector-java-5.1.46.jar:5.1.46]
...

...
Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.46.jar:5.1.46]
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976) ~[mysql-connector-java-5.1.46.jar:5.1.46]
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912) ~[mysql-connector-java-5.1.46.jar:5.1.46]

很明显,是登录数据库出问题导致的。然而一开始并没有想到是项目的问题,因为之前一直用着,就去查数据库相关,发现网上说的那些我早就调试过了。因为Navicat能连接,所以我又试着用jdbc连接,都没问题。于是我又以为是用了Druid这个连接池的问题,发现也没有做加密,而且去掉用户名和密码的参数,直接将用户名和密码写在连接串里,就能正常连接。于是怀疑是这个配置参数出了问题,就在配置类里做了@Value注入配置参数的打印,终于发现问题了。

 

我yml的配置是这样的,密码是纯数字。

url: jdbc:mysql://localhost:3306/zztyyh?useUnicode=true&characterEncoding=UTF8&useSSL=false&autoReconnect=true
username: root
password: 0112

而打印出来的@Value拿到的却是不一样的数字。

 

答案已经很明显,至于为什么突然会这样我也不清楚,之前都这样用得好好的,所以只能做以下修改来解决。当然,这只是我自己电脑的库,生产用的密码还是很复杂的,带字母带符号,就算不这样修改也能正常被@Value拿到。

url: jdbc:mysql://localhost:3306/zztyyh?useUnicode=true&characterEncoding=UTF8&useSSL=false&autoReconnect=true
username: root
password: '0112'

 

为了这种无聊的问题,查了这么久,真的很不值得。

你可能感兴趣的:(Spring,Boot)