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

Docker部署PostgreSQL无法公网访问问题排查求助

解决Docker部署PostgreSQL公网访问问题

1. 检查Docker端口映射

得确认docker-compose.yaml里的端口映射绑定到0.0.0.0,别只绑localhost。正确写法是:

ports:
  - "0.0.0.0:5432:5432"

要是只写5432:5432,有些环境默认还是绑127.0.0.1,外部根本连不上。

2. 确认postgresql.conf监听设置

postgresql.conf里的listen_addresses必须设成'*',允许所有IP访问:

listen_addresses = '*'

另外要注意,如果你是把本地配置文件挂载到容器里的,得确认挂载路径没错,容器里的配置文件确实是修改后的版本,别白改了本地的,容器用的还是原来的。

3. 调整pg_hba.conf的访问规则

在pg_hba.conf里加一条允许外部访问的规则,比如:

# 生产环境建议限制IP段和用户,别直接开全权限
host    all             all             0.0.0.0/0               scram-sha-256

记住规则是从上到下匹配的,这条规则得放在拒绝类规则前面,不然会被先匹配到拒绝。

4. 正确重启容器

改完配置别只docker compose restart,有时候会有缓存,配置不生效,最好先停再启:

docker compose down && docker compose up -d

5. 排查网络障碍

  • 检查宿主机的防火墙/安全组,得把5432端口对外开放,允许外部IP访问。
  • 用telnet 宿主机IP 5432或者nc -zv 宿主机IP 5432测一下端口能不能通,先排除网络堵了的问题。
  • 要是用的云服务器,别忘了检查云服务商的安全组,得开5432端口的入站权限,这步很容易忘。

6. 验证用户访问权限

用来连接的PostgreSQL用户得有外部访问的权限,比如创建用户的时候可以这么设:

CREATE USER your_user WITH PASSWORD 'your_password' LOGIN;
GRANT ALL PRIVILEGES ON DATABASE your_db TO your_user;
-- 允许这个用户从任意IP连接
ALTER USER your_user WITH HOST ALL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:08:29