首先确定mysql成功启动,用户名密码ip等配置不存在问题
1. Communications link failure或The driver has not received any packets from the server
可能原因:
a: url配置问题(包括useSSL,时区或编码方式等的配置)
解决方法:
url: jdbc:mysql://远程ip:3306/数据库名称?useUnicode=true&useSSL=false&serverTimezone=GMT&characterEncoding=UTF-8
b. driver问题
mysql5.*配置:
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mysql 8.*配置:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
c. 驱动版本问题
尝试将mysql-connect-java版本改为5.*
d. linux防火墙或安全组设置问题
e. mysql配置不允许远程访问
找到mysql配置文件my.cnf,一般在/etc目录下。
如果该配置文件中为空(如上图)的话,可能在conf.d或mysql.conf.d文件夹中,文件名可能为mysql.cnf等,正确的配置文件长这样
找到bind-address这一行并将其注释掉,然后通过
service mysql restart
重启mysql服务重新尝试
2. Could not create connection to database server. Attempted reconnect 3 times. Giving up.
出现这个的原因可能是在url配置中开启了自动重连autoReconnect=true,根本应该还是连接出现问题,可以去掉这个配置进行尝试。解决方法参考前文第一类问题的解决方法。
3. Access denied for user 'root'@'localhost'
mysql远程登陆未授权
注意:更改授权之后需要通过以下命令刷新权限或者重启mysql服务
FLUSH PRIVILEGES;
另:更改表的时候可能报错Unknown Column 'Password' In Field List
以上就是我在java连接mysql时候遇到的问题以及总结出的可能解决方法,只是大佬们的搬运工罢了,希望能有所帮助。