【问题标题】:can't authenticate user in postgres docker container无法在 postgres docker 容器中对用户进行身份验证
【发布时间】:2017-06-15 15:55:03
【问题描述】:

将使用 pydanny cookiecutter 构建的 django 应用程序容器化,以部署到 EC2 实例。 docker_compose.yml 非常简单:

version: '2'

volumes:
  postgres_data: {}
  postgres_backup: {}

services:
  postgres:
    build: ./compose/postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - postgres_backup:/backups
    env_file: .env

  ....

dockefile 中没有奇异的东西;只是指向备份和恢复脚本和命令的指针以使其可执行:

FROM postgres:9.4

# add backup scripts
ADD backup.sh /usr/local/bin/backup
ADD restore.sh /usr/local/bin/restore
ADD list-backups.sh /usr/local/bin/list-backups

# make them executable
RUN chmod +x /usr/local/bin/restore
RUN chmod +x /usr/local/bin/list-backups
RUN chmod +x /usr/local/bin/backup

我在我的 db 环境变量上尝试了几种变体,其中最新的看起来像:

# PostgreSQL
POSTGRES_PASSWORD='postgrespass'
POSTGRES_USER='postgres'

容器在以下位置构建和初始化没有问题:

docker-compose build postgres
docker-compose up -d

但是当我尝试制作初始数据并将其迁移到数据库时:

docker-compose run django /usr/local/bin/python manage.py makemigrations

数据库无响应 – “Postgres 不可用 - 正在休眠”并且 docker logs db 返回:

DETAIL:  Connection matched pg_hba.conf line 95: "host all all all md5"
FATAL:  password authentication failed for user "'postgres'"

显然我有一些权限问题,但我不太确定如何解决这些问题。我的容器在 Ubuntu 16.04 AMI 上运行。

【问题讨论】:

    标签: django postgresql docker


    【解决方案1】:

    您可以通过在终端中输入以下命令进入 psql 控制台并更改用户 postgres 的密码

    sudo -u postgres psql
    postgres=# \password
    Enter new password:
    Enter it again:
    postgres=#
    

    或者如果您忘记了重置密码:

    ALTER USER "user_name" WITH PASSWORD 'new_password';
    

    【讨论】:

    • 您必须使用“psql -h 68.152.13.25 -p 5432 -U postgres --password”之类的东西来访问远程实例,问题是您只会产生相同的身份验证错误。
    • 无密码登录:sudo -u user_name psql db_name @kjarsenal
    猜你喜欢
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多