Docker容器内pgAdmin4无法连接PostgreSQL服务器求助
解决pgAdmin4连接PostgreSQL服务器被拒绝的问题
错误信息
无法连接到服务器:连接到主机“db”(172.18.0.3)的5432端口失败:连接被拒绝。请问服务器是否在该主机上运行并接受TCP/IP连接?
错误截图



排查与解决步骤
- 确认PostgreSQL服务状态:登录主机
db(172.18.0.3),执行systemctl status postgresql(systemd系统)或pg_ctl status,验证服务是否正常运行。若未启动,执行systemctl start postgresql启动服务。 - 检查防火墙配置:确认主机
db的防火墙开放5432端口TCP连接:- Ubuntu/Debian:执行
ufw status查看,未开放则运行ufw allow 5432/tcp - CentOS/RHEL:执行
firewall-cmd --list-ports查看,未开放则运行firewall-cmd --add-port=5432/tcp --permanent && firewall-cmd --reload
- Ubuntu/Debian:执行
- 调整PostgreSQL网络配置:
- 编辑
postgresql.conf(路径通常为/var/lib/postgresql/<版本>/main/或/etc/postgresql/<版本>/main/),设置listen_addresses = '*',保存后重启服务。 - 编辑
pg_hba.conf,添加允许pgAdmin所在IP访问的规则,例如:host all all <pgAdmin主机IP>/32 scram-sha-256,保存后重启PostgreSQL服务。
- 编辑
- Docker环境额外检查:若
db是Docker容器:- 执行
docker ps确认容器处于运行状态 - 检查pgAdmin与
db容器是否在同一Docker网络:执行docker inspect db和docker inspect pgadmin对比Networks字段,不同则运行docker network connect <目标网络名> pgadmin
- 执行
- 测试端口连通性:在pgAdmin所在机器执行
nc -zv 172.18.0.3 5432或telnet 172.18.0.3 5432,验证端口是否可连通,不通则优先排查网络或防火墙问题。
内容的提问来源于stack exchange,提问作者Wruce Bayne
相关产品推荐
相关产品推荐

