postgresql - 连接到在 Docker 中运行的 postgres 时出错:pq: password authentication failed for user "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
推荐阅读
- syntax-error - 我在 csound 中收到一条错误消息,但我不知道为什么
- php - 与用于 smtp 的邮件相比,发送具有不同地址的邮件
- javascript - 在登录时或登录后检查 firebase 的身份验证用户角色
- java - 更改具有 N 个范围步骤的数组中的数据?
- performance - LISP 对象没有更多空间错误 wxMaxima
- javascript - 在 POST Express 中使用隐藏输入
- cmake - 在 Windows 10 上使用 CMake 编译 Assimp
- excel - 自动调整行然后添加高度
- augmented-reality - Google Cloud Anchor 和 Microsoft Azure Spatial Anchor 的区别
- python - 设置坐标原点 plotly python