mysql 客户端SSL错误2026 (HY000)

本文介绍了在连接MySQL8.x时遇到错误2026 (HY000)的问题,提供了两种解决方案:一是使用--skip-ssl选项,二是通过设置--ssl-mode=DISABLED禁用SSL连接。此外,还详细解释了--ssl-mode参数的不同取值,并分享了作者的个人背景和职业经历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:客户端连接mysql8.x出现“ERROR 2026 (HY000): SSL connection error: unknown error number”

mysql -h 10.233.117.225 -P3306 -uroot -p
在这里插入图片描述

方案一(已过时):
mysql -h10.233.117.225 -P3306 -uroot -p --skip-ssl
在这里插入图片描述
方案二(推荐):
mysql -h10.233.117.225 -P3306 -uroot -p --ssl-mode=DISABLED
在这里插入图片描述

参数–ssl-mode取值

官方文档:https://dev.mysql.com/doc/refman/8.0/en/connection-options.html#option_general_ssl-mode

DISABLED 与参数skip-ssl一样,不使用SSL/TLS建立加密连接
PREFERRED 优先尝试使用SSL/TLS建立加密连接,如果无法建立则尝试建立非SSL/TLS连接
REQUIRED 只会尝试使用SSL/TLS建立加密连接
VERIFY_CA 与REQUIRED行为一样,与此同时会验证server端的证书是否有效
VERIFY_IDENTITY 与VERIFY_CA行为一样,与此同时验证server端证书的host是否与实际连接的hostname一致

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

### 解决 MySQL 命令行中的 SSL 连接错误和密码安全性警告 当在 MySQL 命令行客户端中遇到 `Error 2026 (CR_SSL_CONNECTION_ERROR)` 或类似的 SSL 错误以及密码安全性的警告时,这通常涉及以下几个方面的原因: #### 1. **SSL 配置问题** `Error 2026` 表明客户端尝试通过 SSL 加密连接到服务器失败。此问题可能由多种原因引起,例如未正确配置 SSL 参数或证书文件路径不正确。 可以通过禁用 SSL 来测试是否是 SSL 导致的问题。运行以下命令来强制关闭 SSL: ```bash mysql --ssl-mode=DISABLED -u your_username -p ``` 如果上述方法成功,则可以确认问题是由于 SSL 配置引起的[^1]。 为了进一步排查,还可以检查 MySQL 的配置文件 (`my.cnf`) 中是否有如下设置: ```ini [mysqld] ssl-ca=/path/to/ca-cert.pem ssl-cert=/path/to/server-cert.pem ssl-key=/path/to/server-key.pem ``` 这些参数指定了 CA 文件、服务器证书和私钥的位置。如果路径有误或者权限不足,可能会导致 SSL 初始化失败。 #### 2. **密码策略与安全性警告** 自 MySQL 5.7 起,默认启用了更严格的密码验证插件(如 `validate_password`),它会对新创建的密码施加复杂度要求。如果用户的密码不符合最低标准,MySQL 可能会发出警告提示。 要查看当前的密码强度级别,执行以下查询: ```sql SHOW VARIABLES LIKE 'validate_password%'; ``` 如果希望调整密码策略以减少此类警告,可通过修改全局变量实现。例如,降低密码长度的要求至较低水平: ```sql SET GLOBAL validate_password.length = 8; ``` 需要注意的是,在生产环境中更改默认的安全选项需谨慎评估风险。 #### 3. **版本兼容性和库更新** 有时该类错误也可能源于不同版本间的兼容性差异或是旧版驱动程序无法支持新的加密算法。建议升级到最新稳定版本并重新编译必要的扩展模块。 另外,请确保操作系统上的 OpenSSL 库是最新的,并且与所安装的 MySQL 版本相匹配。 --- ### 示例代码片段 以下是用于调试的一个简单脚本示例,帮助定位具体哪个阶段发生了异常: ```python import mysql.connector from mysql.connector import Error try: connection = mysql.connector.connect( host='localhost', database='testdb', user='your_username', password='your_password', ssl_disabled=True # 禁用 SSL 测试连通性 ) if connection.is_connected(): db_Info = connection.get_server_info() print(f"Connected to MySQL Server version {db_Info}") except Error as e: print(f"MySQL Connection Error: {e}") finally: if connection and connection.is_connected(): connection.close() print("MySQL connection is closed") ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值