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

使用pgAdmin连接Docker容器内PostgreSQL数据库失败求助

问题描述
  • 本地运行pgAdmin(未部署在容器中)
  • PostgreSQL数据库运行在Docker容器内

错误信息

Unable to connect to server:

connection failed: connection to server at "::1", port 5432 failed: FATAL: password authentication failed for user "myuser"

使用的docker-compose配置

version: '3.8'

services:
  db:
    image: postgres:15
    container_name: film-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
      POSTGRES_DB: mydatabase
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

已尝试操作:

  • 反复核对密码,确认无误
  • 使用127.0.0.1和localhost作为连接地址,均无效
  • 查阅的案例多为pgAdmin和PostgreSQL都在容器中的情况,无法解决当前问题

解决建议
  1. 检查本地端口占用情况
    本地若已安装并启动PostgreSQL服务,会占用5432端口,导致Docker的端口映射未实际生效。用以下命令排查:

    # Windows系统
    netstat -ano | findstr :5432
    # macOS/Linux系统
    lsof -i :5432
    

    若发现本地PostgreSQL在运行,先停止该服务,再重启Docker容器后尝试连接。

  2. 修改Docker端口映射避免冲突
    若不想停止本地PostgreSQL,可修改docker-compose的端口映射为5433:5432,之后pgAdmin连接时使用端口5433、地址127.0.0.1。修改后重启容器:

    docker-compose down && docker-compose up -d
    
  3. 验证容器内用户配置有效性
    进入容器直接用psql登录,确认用户密码是否正确:

    docker exec -it film-db psql -U myuser -d mydatabase
    

    若能成功登录,说明容器内配置正常,问题出在本地连接环节;若登录失败,说明环境变量未生效,需删除数据卷重新创建容器(注意:此操作会清空数据库数据):

    docker-compose down -v
    docker-compose up -d
    
  4. 调整pgAdmin连接配置细节

    • 主机名/地址填写127.0.0.1(避免localhost解析到IPv6的::1,部分容器未监听IPv6)
    • 端口号与docker-compose映射的端口保持一致(默认5432,修改后对应新端口)
    • 确保用户名、密码、数据库名与docker-compose环境变量完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:25:12