You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 16 远程连接失败,提示无pg_hba.conf条目问题求助

PostgreSQL 16 远程连接失败,提示无pg_hba.conf条目问题求助

嘿,我明白这种远程连接卡壳的烦躁,咱们来一步步把这个问题搞定!

首先看你的情况:本地用localhost连完全正常,换成内网IP192.168.86.27就报没有pg_hba.conf条目,而且你明明已经在配置里加了允许所有IPv4和IPv6地址的trust规则,这事儿确实有点怪,不过大概率是下面几个常见的小坑:

最可能的原因:配置修改后没让PostgreSQL“读”到新规则

你改完pg_hba.conf之后,有没有给PostgreSQL发重新加载配置的指令?很多人都忘了这一步!PostgreSQL不会自动监测配置文件的修改,得手动触发:

  • 如果你是用systemd管理的PostgreSQL(比如Ubuntu、CentOS这些主流发行版),在终端跑这个命令:
    sudo systemctl reload postgresql
    
  • 要是你已经本地连上了数据库,也可以直接在psql里执行这条SQL来加载新配置:
    SELECT pg_reload_conf();
    

再检查下监听地址有没有设对

有时候报错提示是pg_hba的问题,但实际是PostgreSQL根本没监听远程请求!打开postgresql.conf,找listen_addresses这个参数,确保它的值是*(代表监听所有网卡地址),如果还是默认的localhost,那不管pg_hba怎么配,远程都连不上。改完这个参数同样要重新加载配置哦。

确认下pg_hba.conf的规则顺序

PostgreSQL是从上到下匹配pg_hba规则的,要是你在那条host all all 0.0.0.0/0 trust上面还有针对192.168.86.27的其他规则(比如拒绝或者不匹配的),就会优先走上面的规则。不过从你贴的配置片段来看,前面都是本地和复制相关的规则,应该不影响,但如果你后面还有没贴完的host ...内容,最好确认下有没有冲突的规则。

试试带ssl参数连接

报错里还提到了no encryption,虽然你的规则是trust不需要加密,但有时候客户端默认会要求加密,你可以在连接命令里加上sslmode=disable试试:

psql -d dbname -h 192.168.86.27 -U postgres sslmode=disable

先优先试重新加载配置,这绝对是远程连接问题里的“Top1”坑,十有八九解决问题!

备注:内容来源于stack exchange,提问作者E J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 15:13:16