升级到 Ubuntu 20.04 后无法连接 MySQL(错误 2026)

yav*_*vor 17 mysql ssl centos7 ubuntu-20.04

将我的工作站升级到 Ubuntu 20.04 LTS 后,我无法连接到在 CentOS 7 服务器上运行的 MySQL 5.7.27。我使用命令进行连接mysql -h <server_ip> -u <user_name> -p,输入密码后出现错误 2026:

ERROR 2026 (HY000): SSL connection error: error:1425F102:SSL
routines:ssl_choose_client_version:unsupported protocol
Run Code Online (Sandbox Code Playgroud)

我还尝试使用 mysqldump 获取数据库数据,但最终出现了类似的错误。我想可能在工作站升级后 mysql 客户端不支持旧协议,所以我使用 ssh 登录服务器,从服务器的 shell 访问 mysql 并查看支持哪些协议

mysql> SHOW GLOBAL VARIABLES LIKE 'tls_version';
+---------------+---------------+
| Variable_name | Value         |
+---------------+---------------+
| tls_version   | TLSv1,TLSv1.1 |
+---------------+---------------+
1 row in set (0,00 sec)
Run Code Online (Sandbox Code Playgroud)

有了这些信息,我尝试再次从工作站连接,这次指定了 TLS 版本

mysql -h <server_ip> --tls-version=TLSv1.1 -u <user_name> -p
mysql -h <server_ip> --tls-version=TLSv1 -u <user_name> -p
Run Code Online (Sandbox Code Playgroud)

这两个命令都以

ERROR 2026 (HY000): SSL connection error: error:141E70BF:SSL routines:tls_construct_client_hello:no protocols available
Run Code Online (Sandbox Code Playgroud)

我发现的唯一解决方法是使用禁用 SSL mysql -h <server_ip> --ssl-mode=DISABLED -u <user_name> -p

我错过了什么还是有什么错误?谢谢您的回答。

小智 17

作为临时解决方案,您可以从命令行禁用 ssl

$ mysql -h <myserver> -u <myuser> -p --ssl-mode=DISABLED
password:
Run Code Online (Sandbox Code Playgroud)

或者通过创建一个 my.cnf 文件

$ cat /etc/my.cnf  
[client] 
ssl-mode=DISABLED
Run Code Online (Sandbox Code Playgroud)


小智 3

我找到了一个解决方案,假设您的 MySQL 使用 OpenSSL 而不是 yaSSL。

参考MySQL的ssl_cipher配置变量。

配置包含伪密码的密码列表@SECLEVEL=1

例如,

ssl_cipher = "DHE-RSA-AES128-GCM-SHA256:AES128-SHA:@SECLEVEL=1"
Run Code Online (Sandbox Code Playgroud)

如果您需要更宽松但仍然安全的密码列表,

"EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:@SECLEVEL=1"
Run Code Online (Sandbox Code Playgroud)

取自cipherlist.eu可能可以完成这项工作。