navicat 16 连 aws rds mysql 必须勾选“use ssl”并设 ssl mode 为 require 或 verify-full;默认 disable 会被拒绝,且路径须用正斜杠、无中文空格,证书需 pem 格式。

Navicat 16 连 AWS RDS MySQL 必须启用 SSL,且 SSL Mode 只能选 require 或更高(如 verify-full),disable 和 prefer 会直接被 RDS 拒绝,报错 SSL connection is required。
为什么连不上?八成是 SSL 开关没打开
Navicat 16 新建 MySQL 连接时,默认 SSL Mode 是 disable。AWS RDS 强制要求加密通道,哪怕你填了证书路径、选了 verify-full,只要顶部的 Use SSL 复选框没勾上,整个 SSL 设置就完全不生效——连接时只会静默失败,错误日志里可能只显示 Connection refused 或 SSL connection is required。
- 务必在连接配置窗口左下角勾选
Use SSL - 勾上之后,
SSL Mode下拉菜单才真正可用;此时再选require(最常用)或verify-full(需额外配证书) - 不要依赖“自动检测”或留空——RDS 不响应未加密握手,Navicat 不会提示你该开 SSL
SSL Mode = require 就够用,verify-full 需额外验证主机名
AWS RDS 提供的公有 endpoint(如 mydb.abcdef123456.us-east-1.rds.amazonaws.com)已由 Amazon RDS CA 签发,require 模式即可建立加密通道,满足绝大多数生产场景。选 verify-full 则必须提供 sslrootcert 文件,且 Navicat 中填的 Host 值必须和证书里的 Subject Alternative Name 完全一致(不能填 IP、不能填别名、不能少字符)。
-
require:只保证传输加密,不校验证书有效性;适合快速上线,兼容性最好 -
verify-full:必须指定sslrootcert路径,且Host字段值必须和证书中 SAN 完全匹配(例如填mydb.abcdef123456.us-east-1.rds.amazonaws.com,就不能填mydb.xxxxxxx.us-east-1.rds.amazonaws.com——哪怕只是末尾多一个点) - RDS 控制台下载的
global-bundle.pem或rds-ca-2019-root.pem是 PEM 格式,可直接用;路径必须用正斜杠,如C:/rds/global-bundle.pem(Windows 也禁用反斜杠\)
证书路径报 file not found?不是文件丢了,是路径写错了
Navicat 对证书路径解析极其严格,常见“找不到文件”根本不是文件不存在,而是路径格式非法:
- 必须用正斜杠
/,C:\rds\root.crt会失败,要写成C:/rds/root.crt - 路径不能含中文、空格、括号
( )、波浪号~,也不能用环境变量(%USERPROFILE%或$HOME全无效) - 文件必须是纯文本 PEM 格式,以
-----BEGIN CERTIFICATE-----开头;.pfx、.der、.crt.bin都不行 - 推荐路径:
C:/navicat-ssl/rds-ca-2019-root.pem(Windows)或/Users/you/navicat-ssl/rds-ca-2019-root.pem(macOS)
RDS 白名单和用户权限没配对,SSL 再对也连不上
SSL 加密和数据库认证是两层独立逻辑。你可能证书全对、SSL Mode 正确、RDS endpoint 能 ping 通,但连接仍失败——因为 RDS 安全组或参数组没放行,或用户没远程权限。
- 安全组(Security Group)必须允许你的本地出口 IP 访问 RDS 的 3306 端口(注意:家庭宽带 IP 是动态的,企业 NAT 出口 IP 可能变化)
- RDS 参数组中确认
require_secure_transport = ON(默认已开),否则即使客户端强制 SSL,服务端也可能降级接受非加密连接 - MySQL 用户必须显式授权从远程 IP 连接:
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass'; GRANT ALL ON *.* TO 'myuser'@'%'; FLUSH PRIVILEGES;;仅'myuser'@'localhost'不生效
最容易被忽略的是:Navicat 的 SSL 设置和 RDS 安全组/IP 白名单是并行生效的,缺一不可。调试时别只盯着证书路径,先用 mysql -h xxx.rds.amazonaws.com -u user -p --ssl-mode=REQUIRED 在命令行验证是否真能通——能通说明 Navicat 配置有问题,不通则优先查网络和权限。











