oraclejdk1.8 换成 openjdk1.8之后,mysql连不上了

日志报错如下:
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

你可能感兴趣的:(java,mysql,java,数据库)