解决IDEA与MySQL的连接失败问题: 终极解决方案指南

德冠谈科技2024-07-06 16:25:29  53

问题描述

使用的idea版本是2023.3.6,当数据库客户端来使用,连接mysql报错:

点击 more 获取更多错误信息:

具体错误信息如下:

The server has terminated the handshake. The protocol list option (`enabledTLSProtocols`) is set, this option might cause connection issues with some versions of MySQL. Consider removing the protocol list option in the JDBC driver.

问题分析

idea 是通过 jdbc 驱动器来连接 MySQL 数据库的,其中 enabledTLSProtocols 属性是 jdbc 驱动的的一个配置选项,它指定了驱动器在与数据库服务器进行安全连接时,可使用的 TLS (传输安全协议)版本。

如果 enabledTLSProtocols 属性设置的版本,MySQL 服务不支持,会导致 MySQL 连接失败。所以可以通过设置这个属性来尝试解决问题。

本次提供两个解决方案,先用解决方案一,如果解决不了再用方案二。

解决方案一

前面说了,idea 支持的 TLS 版本要与 MySQL 服务器支持的 TLS 版本一致,本次解决方案就是清空 idea 的 enabledTLSProtocols 属性,让 jdbc 驱动器使用默认的 TLS 版本,这通常可以与大多数的 MySQL 服务器版本兼容。

右键数据库,连接属性 Properties:

选择 Advanced 一栏,然后拉到下面,找到 enabledTLSProtocols 属性:

如果有值的话,清除属性值:

然后保存:

点击yes后保存,刷新,看看是不是成功了。

解决方案二

如果方案一没有解决,如果还是同样的问题,则直接设置 enabledTLSProtocols 属性为要连接的数据库的 TLS 版本。

使用如下 sql 查看不能连接成功的数据库TLS版本:

SHOW GLOBAL VARIABLES LIKE 'tls_version';

本次查到的版本:

TLSv1,TLSv1.1

再查看能连接成功的数据库的TLS版本,本次查到的是:

TLSv1.2,TLSv1.3

直接把上面查到的版本 TLSv1,TLSv1.1 复制到 enabledTLSProtocols 属性中:

重新刷新数据库。看看是不是成功了。

如果报错:

[08000] TLS protocols TLSv1 and TLSv1.1 are not supported. Accepted values are TLSv1.2 and TLSv1.3.

说明是数据库的 TLS 版本和idea 的 TLS 版本不匹配。该 idea 版本支持的 TLS 版本是 TLSv1.2 and TLSv1.3。

这种情况,只能用低版本的 idea 了,比如用idea2020.3.1版本就可以连接成功:

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/833414.html
0
最新回复(0)