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

如何将Docker化的pgAdmin连接到Docker外的PostgreSQL服务器

解决Docker部署的pgAdmin连接本地PostgreSQL的问题

针对你遇到的Docker版pgAdmin无法连接Ubuntu VPS上原生PostgreSQL的问题,按以下步骤排查修复:

1. 修正PostgreSQL监听地址配置

PostgreSQL的listen_addresses需要监听可被Docker容器访问的地址,而非固定的容器IP(容器IP重启后可能变化):

  • 编辑PostgreSQL配置文件(替换<version>为你的PostgreSQL版本,如14):
    sudo nano /etc/postgresql/<version>/main/postgresql.conf
    
  • 修改监听地址为允许所有IP访问,或指定VPS的内网/公网IP:
    listen_addresses = '*'
    
  • 重启PostgreSQL服务生效:
    sudo systemctl restart postgresql
    

2. 配置pg_hba.conf允许Docker容器访问

pg_hba.conf控制PostgreSQL的访问权限,必须添加允许Docker子网或主机IP的规则:

  • 编辑配置文件:
    sudo nano /etc/postgresql/<version>/main/pg_hba.conf
    
  • 添加以下规则(允许Docker默认子网172.17.0.0/16的所有IP访问,认证方式用scram-sha-256,与PostgreSQL默认配置一致):
    host    all             all             172.17.0.0/16            scram-sha-256
    
    或如果使用host.docker.internal,可添加VPS内网IP的访问规则:
    host    all             all             <你的VPS内网IP>/32            scram-sha-256
    
  • 重启PostgreSQL服务:
    sudo systemctl restart postgresql
    

3. 修正Docker启动命令的参数顺序

你之前的docker run命令参数顺序错误,--restart always和--add-host属于Docker运行参数,必须放在镜像名之前,否则不会生效:

docker run --name pg-admin-4 \
  -e "PGADMIN_DEFAULT_EMAIL=myemail" \
  -e "PGADMIN_DEFAULT_PASSWORD=mypass" \
  -d -p 5050:80 \
  --restart always \
  --add-host host.docker.internal:host-gateway \
  dpage/pgadmin4

如果之前已经创建了容器,先删除旧容器再重新运行:

docker stop pg-admin-4 && docker rm pg-admin-4

4. 确认VPS防火墙配置

确保PostgreSQL的5432端口允许Docker子网或指定IP访问:

  • 若使用ufw防火墙,允许Docker子网访问:
    sudo ufw allow from 172.17.0.0/16 to any port 5432
    
  • 若使用公网IP连接,需开放公网访问(建议搭配SSL使用):
    sudo ufw allow 5432/tcp
    

5. pgAdmin连接参数设置

在pgAdmin界面添加服务器时:

  • 主机地址填写host.docker.internal(需确保--add-host参数生效),或VPS的内网IP/公网IP
  • 端口保持默认的5432
  • 填写PostgreSQL的合法用户名和密码(如postgres用户及对应密码)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:51:16