创建Phoenix/Elixir项目时Postgres密码验证错误怎么解决?
错误核心原因
Postgrex返回28P01 invalid_password错误,是因为Phoenix项目默认的数据库配置密码,和你Docker启动的Postgres实例设置的密码不匹配导致。
解决步骤
- 修改项目数据库配置
打开项目目录下的config/dev.exs文件,找到Pento.Repo的配置块,将password字段的值改为你启动Docker容器时设置的Phoenix1234,修改后的配置参考:
config :pento, Pento.Repo, username: "postgres", password: "Phoenix1234", hostname: "localhost", database: "pento_dev", stacktrace: true, show_sensitive_data_on_connection_error: true, pool_size: 10
- (修改配置后仍报错时执行)重置Postgres容器数据
如果你之前用同一个挂载目录启动过Postgres容器、设置过其他密码,原有数据目录会保留旧的密码配置,需要重置后才能生效:
# 停止并删除现有容器 docker stop phoenix-psql docker rm phoenix-psql # 清空旧数据目录 rm -rf ~/phoenix-postgres-data/* # 重新启动Postgres容器 docker run -d \ --name phoenix-psql \ -e POSTGRES_PASSWORD=Phoenix1234 \ -v ${HOME}/phoenix-postgres-data/:/var/lib/postgresql/data \ -p 5432:5432 \ postgres
- 验证数据库连接
执行以下命令手动验证Postgres连接是否正常,提示输入密码时输入Phoenix1234,能成功进入命令行即说明数据库本身运行正常:
psql -h localhost -U postgres -d postgres
- 重新执行项目启动命令
你原有启动命令重复执行了两次服务启动逻辑,调整为如下命令即可:
cd pento mix ecto.create && iex -S mix phx.server
内容的提问来源于stack exchange,提问作者madeinQuant
相关产品推荐
相关产品推荐

