Docker部署PostgreSQL后DBeaver及pgAdmin连接认证失败求助
PostgreSQL Docker容器连接密码验证失败问题排查
我通过docker-compose部署了PostgreSQL 15容器,同时搭建了pgAdmin容器,但本地使用DBeaver连接时,始终出现FATAL: password authentication failed for user "postgres"的用户名或密码错误提示。尝试过针对SCRAM认证的调试方案,问题仍未解决。
我的docker-compose.yml配置
version: '3' services: db: image: postgres:15 container_name: postgres restart: unless-stopped environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: public ports: - "5432:5432" volumes: - postgres_db:/var/lib/postgresql/data volumes: postgres_db: driver: local
报错截图

解决方法
- 清理旧数据卷:PostgreSQL首次启动会初始化数据卷,后续修改环境变量不会覆盖已有用户配置。删除旧数据卷后重启容器:
docker-compose down -v docker-compose up -d - 排查端口冲突:确认本地5432端口未被其他PostgreSQL实例占用,Linux/macOS用
lsof -i :5432,Windows用netstat -ano | findstr :5432检查,冲突则修改端口映射(如"5433:5432")。 - 验证容器内配置:进入容器直接测试用户名密码:
输入docker exec -it postgres psql -U postgres -d publicpostgres能进入则容器内配置正常,问题在客户端连接设置。 - 检查DBeaver连接参数:确保DBeaver中主机为
localhost,端口为映射端口,用户名postgres,密码postgres,数据库名public,与docker-compose配置完全一致。 - 强制使用MD5认证(测试用):若客户端不兼容SCRAM认证,可添加环境变量强制MD5(生产环境不推荐):
在environment块中新增:POSTGRES_INITDB_ARGS: "--auth-host=md5"
内容的提问来源于stack exchange,提问作者maja kralj
相关产品推荐
相关产品推荐

