使用sqlx连接到在Go中的docker镜像中运行的Postgres

jgwigjjp  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(139)

我有以下连接字符串

postgres://postgres:pw123@localhost:5432/mydb?sslmode=disable

字符串
当我尝试使用docker compose连接到数据库时,这很好用:

docker-compose exec postgresql psql "postgres://postgres:pw123@localhost:5432/mydb?sslmode=disable"


我连接并可以查询数据库。
当我尝试使用它与sqlx我得到一个错误。

db, err := sqlx.Connect("postgres", "postgres://postgres:pw123@localhost:5432/mydb?sslmode=disable")


我得到这个错误:
pq:用户“postgres”的密码验证失败
有人知道为什么我可能会从我的sqlx得到这个,当同样的creds对docker compose工作正常时?

编辑:我尝试更改为使用连接字符串,这是首选的方法,但我仍然有同样的问题:

args := fmt.Sprintf("host=%s port=%s dbname=%s user=%s password=%s sslmode=%s", "localhost", "5432", "mydb", "postgres", "pw123", "disable")

db, err := sqlx.Connect("postgres", args)

dnph8jn4

dnph8jn41#

下面是pg_hba.conf文件:
https://www.postgresql.org/docs/current/auth-pg-hba-conf.html
https://askubuntu.com/questions/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell
有很多[auth-options]trust是一个完全开放的。
听起来你的auth-option对docker-compose有效,但对sqlx无效。尝试将它们全部更改为信任并重新启动postgres。如果这样做有效,然后返回并将它们更改为您想要的身份验证级别。

相关问题