jdbc连接mysql数据库时报错com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
useUnicode=true&characterEncodeing=UTF-8&useSSL=false&serverTimezone=GMT%2d8,如果其中少了一个参数就会报此错误。SSL可以对数据进行加密,其实我们早就接触它了,例如之前我们浏览器访问网站一般是http,而现在是https,这个https就是http+SSL/tcp的简称。值得注意的是在mysql版本在8以上,url是要加上
这个错误的意思是:通信链路故障
我碰到此问题主要是更新mysql数据库的驱动到8.0版本以上,而8.0以上版本在DriverManager.getConnection获取Connection对象时url中有些参数是必须加的。
例如jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncodeing=UTF-8&useSSL=false&serverTimezone=GMT%2d8,如果其中少了一个参数就会报此错误。
值得注意的是在mysql版本在8以上,url是要加上时区的,也就是serverTimezone=GMT%2d8。
同时如果url出现路径问题也会报出此错误,这也是正常的,毕竟路径都错了通信链路可不故障了嘛!
例如jdbc:mysql://192.168.160.134:3306/aozhanpeng?useUnicode=true&useSSL=false&characterEncodeing=UTF-8&serverTimezone=GMT%2b8。我的虚拟机的地址是192.168.160.133,我故意将地址改为192.168.160.134便会报此错误。
当然即使参数全部设置,路径也没有问题,但是将useSSL设置为true也会出现此错误,这个参数主要是设置mysql是否使用安全套接字协议。
SSL可以对数据进行加密,其实我们早就接触它了,例如之前我们浏览器访问网站一般是http,而现在是https,这个https就是http+SSL/tcp的简称。
在这里使用SSL也是对数据传输进行加密。适合需要较高安全性的场景下。
useSSL=true:就是一般通过证书或者令牌进行安全验证
useSSL=false:就是通过账号密码进行连接
至于useSSL=true时如何访问mysql数据库本文就不多赘述了,有不少文章讲述,下面附其中一篇的链接。
更多推荐
所有评论(0)