选Required最常用且稳妥,强制加密但不验证证书;CA File需指定正确ca.pem路径且服务端已启用SSL;协议版本不匹配时需手动指定TLSv1,证书须为PEM格式且私钥无密码。
Navicat里填SSL参数时,SSL Type选哪个才生效
选 required 是最常用也最稳妥的起点——它强制走加密连接,但不验证服务器证书真实性;如果服务端已配好ca、证书和私钥,且你手上有对应的 ca.pem,那就选 ca file 并指定路径。别选 self-signed,这个选项在新版navicat中实际被忽略,属于历史残留项。
-
Required:适合测试或内网环境,只要求加密,不校验证书链 -
CA File:必须填对ca.pem路径,否则连接直接报错SSL connection error: SSL is required but the server doesn't support it - 填了
CA File却没勾选Verify hostname?没问题;但一旦勾上,客户端会比对证书里的Common Name或Subject Alternative Name和你填的主机名是否一致,不一致就断连
MariaDB服务端没开SSL,Navicat再怎么配都连不上
Navicat只是客户端,真正决定能不能走SSL的是MariaDB服务端是否启用了SSL支持。先登录服务器执行:SHOW VARIABLES LIKE 'have_ssl';,返回 DISABLED 或 NO 就白搭。
- 确认
my.cnf(通常是/etc/my.cnf.d/server.cnf)里有这几行且未被注释:[mysqld] ssl-ca=/path/to/ca.pem ssl-cert=/path/to/server-cert.pem ssl-key=/path/to/server-key.pem
- 改完配置必须重启
mariadb服务,不是 reload;用systemctl restart mariadb - 重启后再次查
have_ssl,得是YES;再查ssl_cipher,非空才表示当前连接已走SSL
Navicat提示 SSL connection error: protocol version mismatch
这是客户端和服务端TLS协议版本不兼容的典型表现,常见于老版本MariaDB(10.1.x)搭配新版本Navicat(16+),后者默认要求TLSv1.2+,而旧服务端只支持TLSv1.0。
- 临时解法:在Navicat连接设置里,点击
Advanced→ 勾选Use SSL→ 在下方SSL Cipher框里手动填TLSv1(注意不是TLSv1.2) - 长期建议:升级MariaDB到10.3+,并确保OpenSSL库版本 ≥ 1.0.2;旧版MariaDB即使编译进SSL,也不代表支持TLSv1.2
- 别信“自动协商”——Navicat不会降级尝试,不明确指定cipher就卡在协议握手失败
证书文件路径写错、权限不对、格式不对,全都会静默失败
Navicat读取 ca.pem、client-cert.pem、client-key.pem 时,既不报路径不存在,也不提示权限不足,而是统一退回明文连接或直接中断。
- 路径必须是Navicat所在机器上的绝对路径,Windows用
C:\certs\ca.pem,macOS/Linux用/Users/xxx/certs/ca.pem - 证书文件不能是PKCS#12(
.pfx/.p12)格式,Navicat只认PEM;可用openssl x509 -in cert.pfx -clcerts -nokeys -out client-cert.pem提取 - 私钥文件(
client-key.pem)不能带密码;如果生成时设了密码,得先用openssl rsa -in encrypted.key -out client-key.pem解密 - Linux/macOS下检查文件权限:
client-key.pem必须是600,否则Navicat拒绝读取










