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

文章讲述了在SpringBoot项目中使用ShardingSphere配置数据源时遇到的错误,原因是连接信息中缺少useSSL参数,尤其是从高版本MySQL(如9.0)切换到5.6时。添加useSSL=false参数可以解决这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

解决方案:

排除了连接用户名密码错误、未开通数据库权限等可能性,最终查明由于连接信息中未加参数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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值