PostgreSQL SSL未启用原因排查:配置设置后为何未生效
PostgreSQL SSL未启用的原因及解决方法
核心原因
PostgreSQL中postgresql.auto.conf的配置优先级高于手动编辑的postgresql.conf。你的查询结果明确显示:
postgresql.conf里ssl = on但applied = f(未生效)postgresql.auto.conf里ssl = off且applied = t(已生效)
这意味着auto.conf中的配置直接覆盖了主配置,导致SSL被禁用,进而触发日志中hostssl record cannot match because SSL is disabled的报错。
解决步骤
修正postgresql.auto.conf配置
编辑该文件,将ssl = off修改为ssl = on,或者直接删除该行(若为误操作添加的配置):vim /dbdata/postgres/postgresql.auto.conf也可以用SQL命令重置该配置(需超级用户权限):
ALTER SYSTEM RESET ssl;重新加载配置
无需重启PostgreSQL,执行配置重载即可:# 方法1:使用pg_ctl工具 pg_ctl reload -D /dbdata/postgres # 方法2:使用系统服务命令(适用于systemd环境) systemctl reload postgresql验证配置生效
再次执行查询确认SSL配置已启用:SELECT name, setting, applied FROM pg_file_settings WHERE name = 'ssl';需确保
ssl的setting为on且applied为t。检查pg_hba.conf规则
SSL启用后,pg_hba.conf中第102-104行的hostssl记录将正常生效,无需额外修改(若规则本身配置正确)。
内容的提问来源于stack exchange,提问作者Eugen Konkov
相关产品推荐
相关产品推荐

