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

Docker运行PostgreSQL与Hasura报postgres用户密码不匹配错误

问题根因

报错核心是PostgreSQL数据持久化卷db_data里已经留存了之前初始化生成的旧数据库数据,PostgreSQL官方镜像仅在数据目录完全为空、首次启动初始化时才会读取POSTGRES_PASSWORD环境变量设置用户密码,后续启动时不会再更新已有用户的密码。你当前配置里Hasura连接数据库用的密码,和卷里存的旧postgres用户密码不匹配,就会抛出密码校验失败的错误。

解决方法

根据你是否需要保留现有数据库数据,二选一操作即可:

方案1:不需要保留旧数据(全新部署场景)

  • 先停掉并清除当前容器和关联卷,执行命令:
docker-compose down -v

注意:加-v参数会删除绑定的db_data卷里所有存量数据库数据,有重要数据提前备份

  • 检查配置一致性:你当前贴的docker-compose.yaml里,PostgreSQL服务设置的POSTGRES_PASSWORD值,和Hasura服务里两个数据库连接串的密码值是一致的,不需要修改。后续如果要调整密码,记得同步修改两处:一处是postgres服务下的POSTGRES_PASSWORD字段,另一处是HASURA_GRAPHQL_METADATA_DATABASE_URL、PG_DATABASE_URL两个连接串里postgres:后、@postgres:5432前的密码段。
  • 重新启动服务:
docker-compose up -d

启动完成后报错就会消失,此时用PgAdmin连接PostgreSQL的参数如下:

  • 主机:部署服务的机器IP,本地部署填localhost
  • 端口:5432
  • 用户名:postgres
  • 密码:配置文件里设置的postgrespassword
  • 初始数据库:postgres

方案2:需要保留卷里的存量数据库数据

不需要删卷删容器,直接手动修改postgres用户密码和配置一致即可:

  • 执行命令进入PostgreSQL容器的命令行客户端,把命令里的<你的postgres容器名>替换成实际的容器名,一般是hasura_101-postgres-1:
docker exec -it <你的postgres容器名> psql -U postgres
  • 在打开的psql命令行里执行密码修改SQL:
ALTER USER postgres WITH PASSWORD 'postgrespassword';
  • 输入\q退出psql客户端,重启Hasura容器即可恢复正常:
docker restart <你的hasura容器名>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:27:15