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

Docker Compose部署PostgreSQL后DBeaver连接超时问题求助

解决PostgreSQL容器DBeaver连接超时问题

1. 别用容器内部IP,直接连宿主机地址

你的Docker Compose已经做了端口映射5432:5432,把容器的5432端口映射到了宿主机的同端口。直接用localhost或者宿主机的实际局域网IP(比如192.168.x.x)连接就行,容器内部IP(172.30.0.2)是Docker私有网桥的地址,宿主机外甚至部分本地环境都没法直接访问,这是最容易踩的坑。

2. 检查防火墙/安全组

  • 本地机器:确认系统防火墙(比如Windows Defender、Ubuntu的ufw、CentOS的firewalld)有没有放行5432端口的入站请求。
  • 云服务器:还要检查云平台的安全组规则,确保5432端口的入站流量被允许。

3. 验证端口映射是否真的生效

执行命令检查宿主机的5432端口是否被监听:

# Linux/macOS
netstat -tulpn | grep 5432
# Windows
netstat -ano | findstr :5432

如果看不到0.0.0.0:5432或者:::5432的记录,说明端口映射没生效,重启Docker Compose试试:

docker compose down
docker compose up -d

4. 检查PostgreSQL的连接权限配置

默认容器里的PostgreSQL是允许所有IP连接的,但如果自定义过配置文件,可能会有限制:

  • 进入容器查看pg_hba.conf,确认有允许外部连接的规则:
docker exec -it <容器名/容器ID> cat /var/lib/postgresql/data/pg_hba.conf

确保存在类似host all all 0.0.0.0/0 md5的规则(允许所有IP通过密码连接)。

  • 查看postgresql.conf里的监听地址设置:
docker exec -it <容器名/容器ID> cat /var/lib/postgresql/data/postgresql.conf | grep listen_addresses

如果输出是listen_addresses = 'localhost',需要改成*,然后重启容器。

5. 先在宿主机本地测试连接,排除DBeaver问题

用psql命令在宿主机直接测试,确认数据库本身没问题:

psql -h localhost -p 5432 -U username -d default_database

如果能成功连接,那问题出在DBeaver:检查连接参数(端口是不是5432、用户名密码是否正确、有没有错误开启SSL连接但容器没配置SSL)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:37:02