如何将密码与官方 postgres docker 镜像一起使用?

2024年 2月 5日 69.4k 0

如何将密码与官方 postgres docker 镜像一起使用?

问题内容

尝试使用官方 postgres docker 镜像:

docker run --rm -d
--name my-postgres
--network my-network
-e POSTGRES_USER=postgres
-e POSTGRES_PASSWORD=mysuperduperlongpwstring
-e POSTGRES_DB=postgres
-v /path/to/postgres/data/:/var/lib/postgresql/data
postgres

登录后复制

但是,当使用 Go 创建 postgres 连接时,

psqlInfo := fmt.Sprintf(
"host=%s port=%s user=%s password=%s dbname=%s sslmode=%s",
os.Getenv("DB_HOST"),
os.Getenv("DB_PORT"),
os.Getenv("DB_USER"),
os.Getenv("DB_PASSWORD"),
os.Getenv("DB_NAME"),
os.Getenv("DB_SSL_MODE"),
)
db, err := sql.Open("postgres", psqlInfo)
if err != nil {
panic(err)
}

登录后复制

我总是以

结束

panic: pq: 用户“postgres”的密码验证失败

我没有任何其他方法来验证 mysuperduperlongpwstring:

  • 尝试使用 psql -U postgres -d postgres --password 从 docker 容器内连接数据库,并提供任何内容作为密码就可以了。
  • 尝试从 docker 容器内更改密码,将会得到

错误:必须是超级用户才能更改复制角色或更改复制属性

也就是说,基本上以下答案不再对我有用:

  • 如何更改 Postgresql docker 镜像密码
  • 如何更改 PostgreSQL 用户密码?

由于缺乏资源,我在启动docker时多次更改了mysuperduperlongpwstring,并相应地更改了我的Go PW,但每次都以相同的失败告终。

请问问题出在哪里,如何排查?
如何使用官方 postgres docker 重置密码?

正确答案

在 Docker 容器中,设置您显示的内容并从空卷开始,“postgres”将是超级用户,因此您不会收到有关它需要成为超级用户的错误。

我对此部分看到的唯一合理的解释是,要么您没有在您认为的地方运行 psql,要么您没有从空卷开始,因此您的 docker run 命令只是启动了一个现有数据库,因此您的“-e POSTGRES*”配置全部被忽略。因此,无论怎样,您要么没有连接到您认为的样子,要么它没有按照您想象的方式配置。

以上就是如何将密码与官方 postgres docker 镜像一起使用?的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论