首先确定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目录下。

java项目连接不上数据库 java连接不上mysql_解决方法

如果该配置文件中为空(如上图)的话,可能在conf.d或mysql.conf.d文件夹中,文件名可能为mysql.cnf等,正确的配置文件长这样

java项目连接不上数据库 java连接不上mysql_java_02

 找到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时候遇到的问题以及总结出的可能解决方法,只是大佬们的搬运工罢了,希望能有所帮助。