关于com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link fail解决办法

springboot中shardingsphere配置换数据源后启动时报了以下的错误,觉得挺奇怪的,报错如下图所示:

关于com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link fail解决办法_第1张图片

关于com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link fail解决办法_第2张图片

解决方案:

排除了连接用户名密码错误、未开通数据库权限等可能性,最终查明由于连接信息中未加参数useSSL=false 导致的,类似于如下这种结尾加即可:

jdbc-url: jdbc:mysql://**.**.**.**:3306/app_center?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&useSSL=false

原因分析:

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

2.系统原数据库是9.0版本,切换到了5.6版本,未加该参数因此报错。

3.如果是用户名密码错误、未开通数据库权限等引起,不会报该错误,会报类似如下的错误:

java.sql.SQLException: Access denied for user ‘**’@‘**.**.**.**’ (using password: YES)

你可能感兴趣的:(mysql,Spring,Boot,mysql,spring,boot,数据库)