应修改pg_hba.conf添加允许非SSL连接的规则(如host all all 0.0.0.0/0 md5),并执行pg_reload_conf()重载配置;该方式直接作用于PostgreSQL准入控制,比删注册表更可靠、不破坏Navicat功能且一劳永逸。
Navicat连接PostgreSQL 15报“SSL connection is required”怎么办
这个错误不是navicat的问题,而是postgresql服务端强制要求ssl加密连接,但navicat默认没启用ssl或服务端没配置允许非ssl连接。直接改pg_hba.conf就能绕过,无需动注册表或删配置项。
为什么改pg_hba.conf比删注册表更可靠
删注册表(如HKEY_CURRENT_USER\Software\PremiumSoft)只是清掉Navicat缓存的连接偏好,下次启动仍可能触发相同策略;而pg_hba.conf是PostgreSQL真正的准入规则,改对了就一劳永逸,且不破坏Navicat任何功能。
- PostgreSQL 15默认启用了
ssl = on,但是否强制走SSL,由pg_hba.conf中每条规则的auth-method字段决定 - 只要某条规则的认证方式是
md5、password或trust,且匹配你的连接来源(IP+数据库+用户),它就允许非SSL连接 - 错误提示本身不包含SSL证书路径或密钥问题,说明根本没走到SSL握手阶段,而是被HBA规则拦截了
如何安全修改pg_hba.conf允许Navicat直连
打开PostgreSQL数据目录下的pg_hba.conf文件,在末尾添加一行(或修改已有匹配行):
host all all 0.0.0.0/0 md5
然后执行以下操作:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 确保
postgresql.conf里listen_addresses已设为'localhost,192.168.1.100'(填你服务器实际IP)或'*',否则0.0.0.0/0这条规则不会生效 - 保存
pg_hba.conf后,**必须**执行SELECT pg_reload_conf();或运行pg_ctl reload,不能只重启Navicat - 如果Navicat从本机连(localhost),用
local类型规则更安全:local all all md5 - 生产环境慎用
0.0.0.0/0,应精确限定Navicat所在IP段,例如192.168.1.0/24
改完还是连不上?重点检查这三个地方
常见卡点不在语法,而在路径和权限细节:
-
pg_hba.conf文件必须放在PostgreSQL数据目录下(不是安装目录),可通过SHOW data_directory;确认 - Windows上注意文件可能被记事本另存为
pg_hba.conf.txt,扩展名隐藏时容易误判 - Linux下修改后需检查文件属主和权限:
chmod 600 pg_hba.conf,否则PostgreSQL启动时会拒绝加载 - 如果PostgreSQL日志里出现
no match in pg_hba.conf,说明你填的IP或数据库名和规则不匹配,不是SSL问题,而是HBA根本没命中
真正要留心的是:改pg_hba.conf后必须重载配置,而不是重启整个PostgreSQL服务——后者会中断所有现有连接,而前者只刷新访问控制规则。










