[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报上述错误!
重启没有解决问题!
换驱动也没有解决问题!
最后定位到问题应该与jdk的security设置的TLS版本有关,对比了OracleJDK8u201、AdoptOpenJDK8、AdoptOpenJDK11、新版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