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

Phoenix项目执行mix ecto.setup遇Postgrex密码认证失败错误

排查Ecto连接PostgreSQL容器密码验证失败问题

以下是针对你遇到的密码验证失败问题的具体排查步骤:

  • 修正配置端口类型:你的dev.exs中port字段使用了字符串"5432",Postgrex要求端口为整数类型,修改为:

    port: 5432
    
  • 确认Docker端口映射:执行docker ps查看bs_db容器的端口映射,确保显示为0.0.0.0:5432->5432/tcp,如果主机端口不是5432,需同步修改dev.exs中的端口值。

  • 检查数据库用户权限:虽然你能登录容器,但backend_stuff用户可能缺少创建数据库的权限。进入容器执行:

    docker exec -it bs_db psql -U backend_stuff
    

    再执行SQL授予权限:

    ALTER USER backend_stuff CREATEDB;
    
  • 排查配置覆盖情况:查看项目是否存在dev.secret.exs文件,或者是否设置了DATABASE_URL环境变量,这些都会覆盖dev.exs的配置。执行echo $DATABASE_URL检查是否有输出,若有需确保其凭据与dev.exs一致。

  • 强制刷新配置:重启bs_db容器,关闭当前运行Elixir命令的终端后重新打开,再执行mix ecto.setup,避免旧配置缓存干扰。

  • 模拟连接测试:在主机终端用psql模拟Ecto的连接参数:

    psql -h localhost -p 5432 -U backend_stuff -d postgres -W
    

    输入密码后若能正常连接,尝试手动创建数据库:

    CREATE DATABASE elixir_gist_dev;
    

    这一步成功则问题出在Elixir配置或依赖加载;失败则继续排查PostgreSQL认证配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:19:55