Navicat for Mac 不支持相对路径和波浪号,必须使用本地绝对路径(如 /Users/alex/navicat-certs/pg-prod/ca.pem),路径不能含空格、中文、符号链接;证书权限需为644且属当前用户,格式须为标准PEM;SSL Mode须选Verify-CA或Verify-Full才能生效CA文件路径,且服务端必须已启用SSL并正确配置ssl-ca等参数。
Navicat for Mac 不认相对路径和波浪号
navicat 所有版本(包括 17.2.8)在 macos 上读取 ca.pem、client-cert.pem、client-key.pem 时,只接受**本地绝对路径**。填 ~/navicat-certs/ca.pem 或 ./certs/ca.pem 会静默失败——既不报错,也不加密,连接退化为明文或直接中断。
必须写完整路径,例如:/Users/alex/navicat-certs/pg-prod/ca.pem。路径中不能含空格、中文、括号、符号链接;/Users/alex/My Certs/ca.pem 和 /Users/alex/navicat-certs/ca.pem(若该路径是 ln -s 创建的)全部无效。
证书文件权限与格式被忽略但实际影响连接
Navicat 不提示权限错误,但若 ca.pem 所在目录或文件本身权限过严(如 chmod 600 且非当前用户所有),它会跳过加载,不验证也不报 SSL 相关错误。同样,私钥含密码、或证书不是标准 PEM 格式(比如开头不是 -----BEGIN CERTIFICATE-----),也会静默失效。
- 用
file /Users/alex/navicat-certs/ca.pem确认输出含PEM certificate - 用
openssl x509 -in ca.pem -text -noout验证内容可解析 - 确保文件属主是当前登录用户,权限设为
644
SSL Mode 选错导致证书路径“白填”
即使路径完全正确,如果 SSL Mode 没选对,Navicat 会忽略你填的 CA File 路径:
-
Require:强制加密,但不校验证书——此时填了CA File也无效 -
Verify-CA:必须填对CA File路径,否则报SSL connection error: SSL is required but the server doesn't support it -
Verify-Full:除CA File外,还要求主机名与证书中Subject Alternative Name完全一致,填db01.internal却连192.168.1.10就断
别选 Self-signed——新版 Navicat 中该选项已被忽略,属于残留项。
服务端没开 SSL,客户端再怎么配都是空转
Navicat 是纯客户端,它无法“开启”服务端 SSL。填了证书却连不上,第一反应不该是改 Navicat 设置,而是确认服务端状态:
- 登录数据库服务器,执行
SHOW VARIABLES LIKE 'have_ssl';,返回必须是YES - 检查 MySQL/MariaDB 配置文件(如
/etc/my.cnf.d/server.cnf)是否启用以下三行且未注释:ssl-ca、ssl-cert、ssl-key - 改完配置必须
systemctl restart mariadb(不是reload),再查ssl_cipher是否非空
最常被忽略的一点:证书路径在服务端配置里也必须是绝对路径,且 MariaDB 进程要有读权限——/var/lib/mysql/certs/ca.pem 若属主是 root 而 MariaDB 以 mariadb 用户运行,照样失败。











