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.如果是用户名密码错误、未开通数据库权限等引起,不会报该错误,会报类似如下的错误: