连接到在 Docker 中运行的 postgres 时出错: pq:用户"postgres"的密码身份验证失败



尝试打开数据库,但说用户"postgres"的密码身份验证失败 我无法找到此问题的根本原因。第一次,我正在使用Docker。请求帮助

func openDB() (*sqlx.DB, error) {
q := url.Values{}
q.Set("sslmode", "disable")
q.Set("timezone", "utc")
u := url.URL{
Scheme:   "postgres",
User:     url.UserPassword("postgres", "postgres"),
Host:     "localhost",
Path:     "postgres",
RawQuery: q.Encode(),
}
fmt.Println(u.String())

// fmt.Println(u.String()) is
// postgre://postgres:postgres@localhost/postgres?sslmode=disable&timezone=utc
return sqlx.Open("postgres", u.String())
}

docker-compose.yaml看起来像这样。

version: '3'
networks:
shared-network:
driver: bridge
services:
db:
container_name: sales_db
networks:
- shared-network
image: postgres:11.1-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432

代码没有问题。我更改了端口,现在正在工作。

func openDB() (*sqlx.DB, error) {
q := url.Values{}
q.Set("sslmode", "disable")
q.Set("timezone", "utc")
u := url.URL{
Scheme:   "postgres",
User:     url.UserPassword("postgres", "postgres"),
Host:     "localhost:5433", // change here
Path:     "postgres",
RawQuery: q.Encode(),
}
fmt.Println(u.String())

// fmt.Println(u.String()) is
// postgre://postgres:postgres@localhost/postgres?sslmode=disable&timezone=utc
return sqlx.Open("postgres", u.String())
}

version: '3'
networks:
shared-network:
driver: bridge
services:
db:
container_name: sales_db
networks:
- shared-network
image: postgres:11.1-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
ports:
- 5433:5432 //change here

最新更新