日志报错如下:
com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://192.168.1.15:3306/test_db?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC, errorCode 0,state 08S01
com.mysql.cj.jdbc.exceptions: CommuncationsException: Communcations link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server
...
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communcations link failure
...
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol(protocol is disabled or cipher suites are inappropriate)
报错原因:
openjdk1.8.0_291开始,默认禁用了tls1.0和tls1.1版本,导致jdbc和mysql的连接无法正确建立,从而报错:详细release地址:https://www.java.com/en/download/helprelease_changes.html
对比orackejdk版本,jdbc连接种没有手动指定useSSL=false的时候,其连接的建立仍旧还是使用了tls的方式,并且默认使用1.1版本进行交互,使用openjdk后,因禁用tls1.1, 无法正确发送client hello因而无法建立连接,
解决方法:
解决一、
加useSSL=false
jdbc:mysql://192.168.1.15:3306/test_db?useSSL=false%useUnicode=true&characterEnocind=true&characterEncoding=utf8&serverTimezone=UTC
解决二、指定tls1.2
jdbc:mysql://192.168.1.15:3306/test_db?enabledTLSProtocols=TLSv1.2&useUnicode=true&characterEnocind=true&characterEncoding=utf8&serverTimezone=UTC