【问题标题】:Getting an error while connecting to postgres running in Docker: pq: password authentication failed for user "postgres"连接到在 Docker 中运行的 postgres 时出错:pq: password authentication failed for user "postgres"
【发布时间】:2020-10-13 15:29:51
【问题描述】:

试图打开数据库,但提示用户“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

【问题讨论】:

  • “密码验证失败”表示您的用户名或密码错误,或者您的服务器配置为不允许密码验证。我们无能为力。
  • @Flimzy 如果未将其配置为使用密码身份验证,您将不会收到该消息。但是如果你需要一个密码,但你没有设置密码,你可以得到它。
  • 查看数据库服务器的日志文件以获得更完整的错误报告。
  • 出现端口问题。更改端口后可以正常工作。谢谢。

标签: postgresql docker go sqlx


【解决方案1】:

代码没有问题。我更改了端口,现在一切正常。

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

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 2021-07-19
    • 2019-06-23
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2021-08-30
    • 2021-08-15
    相关资源
    最近更新 更多