Не удалось подтвердить пароль Docker для пользователя "postgres" - PullRequest
1 голос
/ 25 октября 2019

Я пишу файл docker-compose для запуска некоторых сервисов. Но служба БД создает проблемы, я всегда получаю эту ошибку:

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

Я прочитал много тем и правильно установил POSTGRES_USER и POSTGRES_PASSWORD. Я также удалил предыдущие тома и контейнер, чтобы заставить postgresql повторно инициализировать пароль. Но я не могу понять, почему он все еще не работает.

Так что же является правильным способом для принудительной повторной инициализации изображения postgresql. Так что я смогу подключиться к своей базе данных.

Я видел эту ошибку: Connection matched pg_hba.conf line 95: "host all all all md5", и я слышал о файле conf postgres. Но это официальный контейнер, который должен работать, не так ли?

version: '3'
services:
  poll:
    build: poll
    container_name: "poll"
    ports:
      - "5000:80"
    networks:
      - poll-tier
    environment:
      - REDIS_HOST=redis
    depends_on:
      - redis

  worker:
    build: worker
    container_name: "worker"
    networks:
      - back-tier
    environment:
      - REDIS_HOST=redis
      - POSTGRES_HOST=db
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=root
    depends_on:
      - redis
      - db

  redis:
    image: "redis:alpine"
    container_name: "redis"
    networks:
      - poll-tier
      - back-tier

  result:
    build: result
    container_name: "result"
    ports:
      - "5001:80"
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=root
      - POSTGRES_HOST=db
      - RESULT_PORT=80
    networks:
      - result-tier
    depends_on:
      - db

  db:
    image: "postgres:alpine"
    container_name: "db"
    restart: always
    networks:
      - back-tier
      - result-tier
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=root
      - POSTGRES_DB=postgres

volumes:
  db-data:
    driver: local

networks:
  poll-tier: {}
  back-tier: {}
  result-tier: {}

От меня ожидают подключения БД, а не password authentication failed for user "postgres".

1 Ответ

0 голосов
/ 25 октября 2019

Убедитесь, что ваши приложения (не контейнер базы данных) на самом деле используют переменные POSTGRES_USER и POSTGRES_PASSWORD. Я подозреваю, что они ищут что-то вроде DB_USER или аналогичное и поэтому не получают правильные значения.

По умолчанию каждый драйвер базы данных PostgreSQL и инструмент администратора по умолчанию настроены на пользователя postgres. Это может объяснить, почему сообщение об ошибке жалуется на postgres, даже если переменная среды не используется.

Хороший способ проверить это - изменить все ссылки на пользователя базы данных в файле docker-compose начто-то вроде postgres2. Я подозреваю, что вы все еще будете видеть приложения, жалующиеся на то, что аутентификация пароля не удалась для postgres.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...