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

配置PostgreSQL允许外部连接失败的问题排查

解决PostgreSQL无法接受外部连接的问题

核心问题分析

从启动日志和netstat输出可见,PostgreSQL仍仅监听127.0.0.1与::1本地回环地址,说明你修改的listen_addresses = '*'配置未被当前运行的实例加载,导致外部连接被拒绝。

分步解决方案

1. 确认配置文件路径正确性

先确保你修改的是当前实例正在使用的配置文件,而非其他副本:

  • 本地登录PostgreSQL:
    psql -U postgres
    
  • 执行SQL查询获取配置文件绝对路径:
    SHOW config_file;
    SHOW hba_file;
    
  • 对比输出路径与你修改的文件路径,完全一致才继续后续操作。

2. 修正listen_addresses配置

打开正确路径下的postgresql.conf:

  • 确保listen_addresses = '*'无注释(行首无#)
  • 确认使用英文半角引号,无多余空格或拼写错误
  • 搜索文件内是否有重复的listen_addresses配置,若有则删除或注释掉重复项

3. 修正pg_hba.conf的IPv6规则

你当前的IPv6规则::0/0是错误的,正确的任意IPv6地址段应为::/0,修改后如下:

# IPv6 local connections:
host     all             all             ::/0                  scram-sha-256

4. 正确重启PostgreSQL服务

在Pop! OS 22.04上,用systemctl命令确保服务完全重启:

sudo systemctl restart postgresql
# 若为特定版本实例(如15),执行:
sudo systemctl restart postgresql@15-main

5. 验证监听状态

重启后执行命令确认监听配置生效:

ss -tulpn | grep postgres

若输出包含0.0.0.0:5432和:::5432,说明已成功监听所有地址。

6. 测试连接

  • 先在本地用服务器IP测试:
    psql -h 192.168.50.136 -U postgres
    
  • 本地测试通过后,再从其他机器执行相同命令验证远程连接。若仍失败,可先用telnet 192.168.50.136 5432排查端口连通性。

内容的提问来源于stack exchange,提问作者Steve Quinn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:42:53