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

运行docker-compose启动Postgres时出现用户密码认证失败问题

PostgreSQL密码认证失败问题排查与解决

我之前也碰到过一模一样的情况——当执行docker-compose -f production.yml up启动服务时,直接弹出了PostgreSQL的密码认证失败错误,连带着Django一直在原地等待PostgreSQL可用。先给你看看当时的错误日志:

postgres_1 | Connection matched pg_hba.conf line 95: "host all all all md5"
django_1 | PostgreSQL is unavailable (sleeping)...
postgres_1 | 2018-03-21 07:48:35.575 UTC [120] FATAL: password authentication failed for user "DbUsErName"
postgres_1 | 2018-03-21 07:48:35.575 UTC [120] DETAIL: Password does not match for user "DbUsErName"

这个问题核心其实很明确:Django服务使用的数据库密码和PostgreSQL中DbUsErName用户的密码不匹配。既然你的PostgreSQL配置存在.envs/.production/.postgres文件里,咱们就从这里一步步解决:

  • 首先打开.envs/.production/.postgres文件,重点核对两个关键配置项:
    • POSTGRES_USER:确认这个值就是DbUsErName(PostgreSQL用户名大小写敏感,别写错字符)
    • POSTGRES_PASSWORD:这个就是DbUsErName的登录密码,必须和Django那边的数据库密码完全一致——不管是Django配置文件里的DATABASES设置,还是对应环境变量(比如.envs/.production/.django里的DB_PASSWORD或者DATABASE_URL中的密码部分),都要一模一样,不能有多余空格、换行,大小写也得完全对应。
  • 如果发现两边密码不匹配,修改对应的环境变量文件,把密码统一成同一个值。
  • 修改完成后,先执行docker-compose -f production.yml down停掉所有服务,再重新执行docker-compose -f production.yml up启动。
  • 要是改完密码还是报错,那大概率是旧的PostgreSQL数据卷已经保留了初始的密码配置,这时候需要清理旧数据卷:执行docker-compose -f production.yml down -v(这个命令会删除所有相关容器和数据卷),之后再重新启动服务,PostgreSQL就会用新密码重新初始化用户了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:31:34