Подключение к Postgres Docker серверу - аутентификация не удалась - PullRequest
0 голосов
/ 09 апреля 2020

У меня установлен контейнер PostgreSQL, к которому я могу успешно подключиться с помощью Adminer, но я получаю ошибку аутентификации при попытке подключиться через что-то вроде DBeaver с использованием тех же учетных данных.

Я пытался предоставив порт 5432 в Dockerfile и увидев на Windows для docker, что порт правильно связан. Я предполагаю, что из-за ошибки аутентификации проблема не в том, что сервер не виден, а с именем пользователя или паролем?

Docker Составьте файл и Dockerfile выглядят следующим образом.

version: "3.7"

services:

  db:
    build: ./postgresql
    image: postgresql
    container_name: postgresql
    restart: always
    environment:
      - POSTGRES_DB=trac
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=1234
    ports:
      - 5432:5432

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

  nginx:
    build: ./nginx
    image: nginx_db
    container_name: nginx_db
    restart: always
    ports:
      - "8004:8004"
      - "8005:8005"

Dockerfile: (Dockerfile позже будет использоваться для копирования сертификатов и ключей ssl)

FROM postgres:9.6

EXPOSE 5432

Хотите знать, есть ли что-то еще, что я должен сделать, чтобы это работало с помощью какой-то другой утилиты?

Любая помощь будет отличной.

Заранее спасибо.

Обновление:

Попытка доступа к базе данных через IP-адрес контейнера postgresql 172.28.0.3, но время соединения истекло, что говорит о том, что PostgreSQL правильно прослушивает 0.0.0.0:5432 и для по какой-то причине пользователь и пароль не могут использоваться вне Docker даже с хост-компьютера с использованием localhost.

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Проверьте файл pg_hba.conf в папке данных Postgres. Конфигурация по умолчанию состоит в том, что вы можете войти только с локального хоста (что, как я полагаю, делает Администратор), но не с внешних IP-адресов.

Чтобы разрешить доступ со всех внешних адресов, используя проверку подлинности с помощью пароля, добавьте следующую строку в pg_hba.conf:

host    all             all            *            md5

Затем вы можете подключиться к вашей postgres БД, работающей в контейнере docker извне, если вы предоставите порт (5432)

0 голосов
/ 15 апреля 2020

Используйте команду docker container inspect ${container_number}, это скажет вам, какой IP-адрес: порты открыты вне контейнера.

Команда 'docker container ls' поможет определить «номер контейнера»

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