PG::ConnectionBad (ФАТАЛЬНЫЙ: pg_hba.conf отклоняет соединение для хоста «172.17.0.1», пользователя «XXX», базы данных «XXX», SSL отключен):

#ruby-on-rails #postgresql #docker #digital-ocean

#ruby-on-rails #postgresql #docker #digital-ocean

Вопрос:

Я использую postgres:9.4.5 изображение для своего проекта, используя dockers on digitalocean droplet.

Ниже приведены docker-compose.yml конфигурации для postgres .

 db:

  # use the preferred version of the official Postgres image
  # see https://hub.docker.com/_/postgres/
  build: .
  # build with a different Dockerfile
  dockerfile: Dockerfile-pg

  # persist the database between containers by storing it in a volume
  volumes:
    - postgres:/var/lib/postgresql/data
  ports:
    - "5432:5432"
  environment:
    POSTGRES_USER: XXX
  

Внутри Dockerfile-pg у меня есть следующие конфигурации

 FROM postgres:9.4.5

EXPOSE 5432
  

Когда я build запускаю изображения, я получаю следующее error

 PG::ConnectionBad (FATAL:  pg_hba.conf rejects connection for host "172.17.0.1", user "XXX", database "XXX", SSL off ):
  

Я уже установил следующую строку, чтобы разрешить все подключения в postgresql.conf файле

 listen_addresses = '*'  
  

внутри pg_hba.conf файла я также настроил следующую строку, чтобы разрешить все подключения

 host all all 0.0.0.0/0 trust
  

Я также настроил local среду с таким же configurations значением в моей локальной системе. На моем локальном компьютере все работает нормально. На сервере также все работало нормально digitalocean несколько дней назад.

Я не знаю, почему он пытается подключиться с этого IP 172.17.0.1 . Я настроил HOST_IP для postgres того, который является моим droplet ip .

Я не знаю, почему я получаю это error . Я перепробовал все, чтобы это исправить.

Пожалуйста, помогите мне!

Комментарии:

1. Вы перезапустили базу данных?

2. Нет, для развертывания я использовал обычные команды docker-compose для «сборки» и «обновления» образов docker

3. Я перезапустил базу данных, но все еще получаю ту же ошибку

Ответ №1:

Проверьте свой pg_hba.conf файл. У вас могут быть параметры, которые вы не добавили, такие как

 host all pgdbadm 0.0.0.0/0 md5
  

Этот pgdbadm известен по учетной записи, созданной хакерами, занимающимися крипто-майнингом.

Ответ №2:

Добавьте ?ssl= true amp;sslmode=require к вашему datasourse.url. Например.

 url: ${db.url:jdbc:postgresql://${db.host:localhost}:${db.port:5432}/${db.name:my_db}}?ssl=trueamp;sslmode=require