问题描述

java项目(springboot)连接mysql出现如下错误:

image-20220107152352681

1
Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

项目中配置的jdbc连接地址如下:

1
2
druid.url=jdbc:log4jdbc:mysql://172.18.xxx.xxx:3306/xxxxdb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC

但是通过navicat等工具可以正常的连接

image-20220107152618747

原因

查了很多资料,发现在MySQL5.7之前的版本,安全性较低,存在任何用户都可以连接上的 test 库,所以官方在5.7版本加大了对隐私的保护。并且采用了默认 useSSL = true值防止对数据库的随意修改,到了8.0版本,仍然保留了SSL,并且默认值为 true,所以只要将 “?useSSL= false” 放在url表名后即可

解决办法

在配置的jdbc连接地址末尾带上如下参数即可:

1
&useSSL=false

例如:

1
druid.url=jdbc:log4jdbc:mysql://172.18.xxx.xxx:3306/xxxxdb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=false