Docker环境下Adminer无法连接PostgreSQL服务器的求助
PostgreSQL + Adminer Docker Compose 连接失败解决方案
问题背景
使用Docker Compose部署PostgreSQL 15.2(Debian镜像)和Adminer,容器均正常启动,但通过Adminer连接时提示连接被拒绝,PostgreSQL日志显示已正常监听0.0.0.0:5432。
可行连接方案
1. 修改Adminer连接的主机地址(核心解决方法)
在Docker Compose的默认网络中,服务名可作为主机名直接访问。Adminer容器和PostgreSQL容器处于同一网络,因此不能用localhost作为主机地址,需替换为PostgreSQL的服务名:
- 打开Adminer页面:
http://localhost:8080/ - 连接表单填写:
- 主机:
db(对应docker-compose.yml中PostgreSQL的服务名) - 用户名:
postgres - 密码:
pswd - 数据库:
auth_db
- 主机:
- 点击「登录」即可连接。
2. 检查宿主机端口占用情况
如果宿主机本地已有PostgreSQL或其他进程占用5432端口,会导致容器端口映射失效:
- Linux/macOS执行命令检查端口:
netstat -tulpn | grep 5432 - Windows执行命令检查端口:
netstat -ano | findstr :5432 - 若端口被占用,修改docker-compose.yml的端口映射(例如改为
5433:5432),然后重启容器:docker-compose down && docker-compose up -d注:此修改仅影响宿主机到容器的连接,Adminer内部连接仍使用
db作为主机名。
3. 验证pg_hba.conf的连接权限
若上述方法无效,检查映射卷./postgres中的pg_hba.conf,确保允许Docker网络的连接:
- 在
pg_hba.conf中添加或修改规则:host all all 172.17.0.0/16 scram-sha-256 - 重启PostgreSQL容器:
docker-compose restart db
内容的提问来源于stack exchange,提问作者AlexeiP
相关产品推荐
相关产品推荐

