Datagrip升级导致[08S01] Communications link failure

4,175 阅读1分钟

[08S01] Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate).

升级完datagrip之后连接mysql报上述错误!

重启没有解决问题!

换驱动也没有解决问题!

最后定位到问题应该与jdksecurity设置TLS版本有关,对比了OracleJDK8u201AdoptOpenJDK8AdoptOpenJDK11、新版datagrip jbr1、新版idea jbr11以及老版pycharm jbr11各版本中的java.security文件,其中比较相关的一项jdk.tls.disabledAlgorithms

OracleJDK8u201中的配置是:

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \
    EC keySize < 224, 3DES_EDE_CBC, anon, NULL

老版Pycharm jbr11中的配置是:

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \
    EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

而在其他几个版本中都是

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

对比后较直观的原因是TLSv1, TLSv1.1算法被禁导致的错误,解决方案直接将datagrip jbr11配置中的TLSv1, TLSv1.1删除

处理完重启之后可以正常连接mysql