【问题标题】:PostgreSQL with docker compose and sqlalchemyPostgreSQL 与 docker compose 和 sqlalchemy
【发布时间】:2020-01-21 19:30:39
【问题描述】:

嘿,我正在尝试创建一个 postgresql 数据库容器,我正在使用以下命令运行它:

docker-compose up

在以下撰写文件上:

version: '3.1'
services:

  db:
    image: postgres
    restart: always
    environment:
      POSTGRES_USERNAME: admin
      POSTGRES_PASSWORD: admin
      POSTGRES_DB: default_db
    ports:
      - 54320:5432

但是,当我尝试使用以下 python 代码连接到它时:

import sqlalchemy
engine = sqlalchemy.create_engine('postgres://admin:admin@localhost:54320/default_db')
engine.connect()

我收到以下错误:

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL:  password authentication failed for user "admin"

有人知道为什么会这样吗?

【问题讨论】:

  • 您的 postgres 身份验证是如何配置的?客户端库似乎能够访问 Postgres,但不能进行身份验证。尝试启动容器,然后执行docker exec -it <postgres-container-id> /bin/sh,并尝试从容器内连接到 Postgres。
  • 尝试 POSTGRES_USER 而不是 POSTGRES_USERNAME

标签: python postgresql docker-compose


【解决方案1】:

您应该使用 POSTGRES_USER 而不是 POSTGRES_USERNAME。

这是我的 postgres docker-compose 配置供您参考。

version: '3'
services:
    postgres:
        image: 'mdillon/postgis:latest'
        environment:
            - TZ=Asia/Shanghai
            - POSTGRES_USER=postgres
            - POSTGRES_PASSWOR=postgres
        ports:
            - '15432:5432'

【讨论】:

    【解决方案2】:

    使用 POSTGRES_USER 而不是 POSTGRES_USERNAME 为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2022-01-13
      • 2019-07-22
      • 2021-11-24
      • 1970-01-01
      • 2015-06-19
      • 2019-07-27
      • 2020-07-23
      • 2018-10-03
      • 2021-03-02
      相关资源
      最近更新 更多