You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署MySQL 8.1.0使用内部生成证书启动SSL/TLS报错求助

解决Docker中MySQL 8.1.0自签证书SSL启动异常问题

错误原因分析

你遇到的SSL_CTX_set_default_verify_paths failed错误,是因为MySQL 8.x启用SSL时默认会尝试验证证书链;如果未指定ssl_ca,它会去加载系统默认的CA路径,但Docker容器内通常没有这个路径或文件,导致初始化失败。同时mysqlx插件(MySQL X协议)也需要对应的SSL配置,否则会抛出上下文不可用的错误。

解决方案

1. 修复主服务器SSL配置(核心)

由于你使用的是自签证书,证书本身就是签发CA,只需将证书文件同时指定为CA文件即可解决证书链验证问题。修改你的配置文件:

ssl_cert=/certs/certificate_name.cer
ssl_key=/certs/certificate_name.key
ssl_ca=/certs/certificate_name.cer  # 添加这一行
require_secure_transport=ON

2. 处理mysqlx插件错误

有两种方式解决mysqlx的SSL异常:

  • 方式一:为mysqlx配置SSL参数
    在配置文件中添加mysqlx对应的SSL配置:
    mysqlx_ssl_cert=/certs/certificate_name.cer
    mysqlx_ssl_key=/certs/certificate_name.key
    
  • 方式二:禁用mysqlx插件
    如果你不需要使用MySQL X协议,直接禁用插件即可:
    mysqlx=0
    

3. 验证证书文件权限

确保Docker挂载的/certs卷中,证书文件的权限允许MySQL进程(容器内默认用户为mysql)读取:

  • 在宿主机上执行:
    chmod 644 /path/to/your/certs/certificate_name.cer
    chmod 600 /path/to/your/certs/certificate_name.key  # 私钥需设置更严格的权限
    

关于“忽略CA验证”的说明

MySQL服务器端没有专门的“忽略CA验证”配置项,你遇到的错误并非要求验证客户端证书,而是服务器自身无法完成证书链验证。通过将自签证书指定为ssl_ca,即可让服务器确认证书的有效性,同时不会强制客户端提供证书(除非额外配置客户端验证参数)。

内容的提问来源于stack exchange,提问作者Kodo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:22:42