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

如何连接host.docker.internal的Postgres实例并解决pgAdmin认证错误

问题修复方案

配置不匹配问题整理

你的多份配置之间存在三处核心不匹配,是认证失败的直接原因:

  • 端口不匹配:postgres容器对外映射端口为5432,但servers.json、pgpass文件中均填写了15432,无法对应到postgres服务
  • 账号密码不匹配:postgres容器配置的默认用户名为root、默认密码为root,但servers.json中填写的用户名为postgres,pgpass文件中填写的账号密码为postgres/postgres,和容器配置完全不一致
  • 挂载路径不匹配:docker-compose中pgadmin挂载的本地密码文件路径为./pgpass,如果你本地的密码文件命名为.pgpass,会导致挂载的文件不存在,pgadmin无法读取密码

修复步骤

1. 调整servers.json配置

修正端口和用户名参数,修改后内容如下:

{
  "Servers": {
    "1": {
      "Name": "docker_postgres",
      "Group": "docker_postgres_group",
      "Host": "host.docker.internal",
      "Port": 5432,
      "MaintenanceDB": "postgres",
      "Username": "root",
      "PassFile": "/pgpass",
      "SSLMode": "prefer"
    }
  }
}

2. 调整pgpass配置

首先将本地.pgpass文件重命名为pgpass,再修改内容为:

host.docker.internal:5432:postgres:root:root

3. 修正pgpass文件权限

pgadmin会自动忽略权限不符合要求的密码文件,执行以下命令调整权限:

  1. 进入pgadmin容器:docker exec -it pgadmin4_container bash
  2. 修改文件权限与属主:chmod 600 /pgpass && chown pgadmin:pgadmin /pgpass
  3. 退出容器后重启服务:docker restart pgadmin4_container
    所有配置调整完成后重新打开pgAdmin即可正常连接postgres服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:39:04