Pg php connect: PHP: pg_connect — Manual

pg hba.conf — подключиться к серверу PostgreSQL: FATAL: нет записи pg_hba.conf для хоста

спросил

Изменено
19 дней назад

Просмотрено
900 тысяч раз

Я пытаюсь запустить присланный мне веб-сайт, но после этого появляется эта ошибка

подключение к серверу PostgreSQL: FATAL: нет записи pg_hba.conf для хоста «4X.XXX.XX.XXX», пользователя «userXXX», базы данных «dbXXX», SSL отключен в C:\xampp\htdocs\xmastool\index.php на линии 37

Я нашел этот ответ, в котором говорится, что мне просто нужно добавить запись в файл pg_hba.conf для этого конкретного пользователя.

Это мой файл pg_hba.conf .

 # ТИП БАЗЫ ДАННЫХ АДРЕС ПОЛЬЗОВАТЕЛЯ МЕТОД
# Локальные соединения IPv4:
локальный dbXXX userXXX md5
хост dbXXX userXXX XX. XXX.XXX.XXX md5
хост все все 127.0.0.1/32 md5
# Локальные соединения IPv6:
хост все все ::1/128 md5
# Разрешить подключения репликации с локального хоста пользователем с
# привилегия репликации.
# host репликация postgres 127.0.0.1/32 md5
# host replication postgres :: 1/128 md5
 

, но после этого ошибка все еще сохраняется. Я перезапускал свой сервер XAMPP несколько раз, но ничего не изменилось.

Что мне нужно изменить в pg_hba.conf ?

  • postgresql
  • pg-hba.conf

0

Добавьте или отредактируйте следующую строку в вашем postgresql.conf :

 listen_addresses = '*'
 

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

 # TYPE DATABASE USER CIDR-ADDRESS METHOD
хост все все 0.0.0.0/0 md5
 

Перезапустите Postgresql после добавления с помощью service postgresql restart или эквивалентной команды для вашей установки. Для варева сервисы варки перезапускают postgresql

6

Это решение работает для IPv4/IPv6:

Отредактируйте файл pga_hba.conf

Откройте файл pga_hba.conf в вашем любимом редакторе:

 [root@localhost ~]# nano /var/lib/pgsql/data/pg_hba.conf
 

Добавить в файл pga_hba.conf

Добавить следующие строки в конец файла pga_hba.conf :

 host all all ::1/128 md5
разместить все postgres 127.0.0.1/32 md5
 

Закройте и сохраните редактор по вашему выбору.

Перезапустить службу

Перезапустить postgresql с помощью следующей команды:

 [root@localhost ~]# /etc/init.d/postgresql restart
 

4

Я решил это так:

Добавил строку, как показано ниже, в pg_hba.conf :

 hostnossl all all 0. 0.0.0/0 trust
 

и это было изменено в postgresql.conf , как показано:

 listen_addresses = '*'
 

У меня этот экземпляр работал на Centos 7.3 и Postgres 9.5 на виртуальной машине в Azure , учитывая, что это был POC (доказательство концепции), вы не захотите подключаться без SSL в своей реальной рабочей среде.

Для подключения к экземпляру я использовал pgAdmin 4 на macOS Sierra .

1

Свежая установка Postgres 9.5, Ubuntu.

Ключ был типом соединения локального , так как psql использует соединение сокета домена.

pg_hba.conf

 # ТИП БАЗЫ ДАННЫХ ПОЛЬЗОВАТЕЛЬ CIDR-АДРЕС МЕТОД
локальные все все md5
хост все все 0.0.0.0/0 md5
 

Инструкции для пользователей Debian.

Войти как пользователь posgres:

 $ sudo su - postgres
 

Получить местоположение pg_hba. conf, запросив базу данных:

 $ psql -c "SHOW hba_file;"
              hba_file
-------------------------------------
/etc/postgresql/11/main/pg_hba.conf
(1 ряд)
 

Открыть pg_hba.conf:

 нано /etc/postgresql/11/main/pg_hba.conf
 

Добавьте конфигурацию, где написано «Поместите вашу фактическую конфигурацию здесь»:

 # ТИП БАЗЫ ДАННЫХ ПОЛЬЗОВАТЕЛЬ CIDR-АДРЕС МЕТОД
хост все все 0.0.0.0/0 md5
 

Выход для вашего пользователя:

 $ выход
выйти
 

Перезапустите сервер postgres, чтобы изменения вступили в силу:

 $ sudo systemctl restart postgresql
 

0

  1. Добавьте следующую строку внизу pg_hba.conf :

    hostnossl все все 0.0.0.0/0 md5

  2. Добавить/изменить строку в postgresql.conf :

    listen_addresses = '*'

  3. УБЕДИТЕСЬ, ЧТО подключающийся пользователь имеет пароль: (Пример подключения пользователя с именем postgres )

    а. Запустите следующую команду psql с учетной записью пользователя postgres :

    sudo -u postgres psql postgres

    б. Установите пароль:

    # \ пароль postgres

0

Это ниже работало для меня: (pg_hba.conf)

 # ТИП БАЗЫ ДАННЫХ ПОЛЬЗОВАТЕЛЬ АДРЕС МЕТОД
# "local" только для соединений сокетов домена Unix
локальные все все md5
# Локальные соединения IPv4:
хост все все 127.0.0.1/32 доверие
хост все все 0.0.0.0/0 доверие
# Локальные соединения IPv6:
хост все все ::1/128 доверие
хост все все 0.0.0.0/0 доверие
 

доверие

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

мд5

Требовать от клиента предоставления пароля с двойным хешированием MD5 для
аутентификация.

подробнее здесь

0

У меня была такая же ошибка, когда я пытался подключиться к локальной базе данных с помощью туннеля SSH. Я решил это, изменив имя хоста с localhost на 127.0.0.1 .

В моем случае я столкнулся с этим, когда у меня не было доступа для редактирования каких-либо файлов конфигурации на сервере (подключение .NET к управляемой базе данных в DigitalOcean), поэтому другие ответы были невозможны.

Хост предоставил мне URL-адрес подключения postgresql:// с опцией ?sslmode= в конце. У меня была точно такая же ошибка, пока я не добавил "Режим SSL=Предпочитать;Сертификат доверенного сервера=истина;" в мою переведенную строку подключения .NET.

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

1

В моем случае мне пришлось добавить именно ту строку, которую предлагает информация об ошибке. Невозможно обойти это, добавив, как правило, «всех» пользователей со всеми IP-адресами. Сейчас так:

PosgreSQL 10.5 на CentOS 7.

 # Локальные соединения IPv4:
хост все все 127.0.0.1/32 md5
host  postgres /32 md5
 

Найдите правильный файл конфигурации:

 su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"
 

Добавьте следующее в конец файла:

 локальный все все одноранговые
 

Затем перезапустите приложение PostgreSQL:

 /bin/systemctl перезапустить postgresql*.service
 

По ссылке https://docs.bitnami.com/aws/apps/noalyss/administration/configure-pgadmin/.

Для PgAdmin 4 в Windows. Я добавил эти строки ниже

pg_hba.config:

 host all all all md5
 

и изменить postgresql. config:

 listen_addresses = '*'
 

Настройка pgAdmin 4

ПРИМЕЧАНИЕ. Мы находимся в процессе изменения файловой структуры и конфигурации для многих стеков Bitnami. Из-за этих изменений пути к файлам, указанные в этом руководстве, могут измениться в зависимости от того, использует ли ваш стек Bitnami собственные системные пакеты Linux (подход A) или это автономная установка (подход B). Чтобы определить тип установки Bitnami и подход, которому следует следовать, выполните следующую команду:

$ тест! -f "/opt/bitnami/common/bin/openssl" && echo "Подход A: Использование системных пакетов." || echo "Подход B: автономная установка."
 

Выходные данные команды указывают, какой подход (A или B) используется при установке, и позволяют определить пути, конфигурацию и команды для использования в этом руководстве. Обратитесь к FAQ для получения дополнительной информации об этих изменениях.


ПРИМЕЧАНИЕ. В этом разделе предполагается, что вы загрузили и установили pgAdmin 4.

pgAdmin — самая популярная и многофункциональная платформа для администрирования и разработки баз данных PostgreSQL. Посетите официальную страницу pgAdmin для получения дополнительной информации.

Чтобы подключиться к удаленному серверу базы данных PostgreSQL с помощью pgAdmin 4, выполните следующие действия:

ПРИМЕЧАНИЕ. В следующих шагах вы будете изменять пару файлов конфигурации PostgreSQL. В зависимости от типа установки эти файлы будут расположены по следующим путям:

  • Убедитесь, что у вас есть IP-адрес вашего облачного сервера и учетные данные приложения (инструкции).

  • Откройте порт 5432 в брандмауэре сервера (инструкция).

    ВАЖНО. По умолчанию доступ к порту базы данных для узлов в этом решении невозможен через общедоступный IP-адрес. В результате вы сможете подключаться к узлам базы данных только с компьютеров, работающих в той же сети. Из соображений безопасности мы не рекомендуем делать порт базы данных доступным через общедоступный IP-адрес. Если вы должны сделать его доступным через общедоступный IP-адрес, мы рекомендуем ограничить доступ доверенным списком исходных IP-адресов с помощью правил брандмауэра. В целях разработки вы также можете использовать туннель VPN или SSH. См. FAQ для получения информации о доступе к ограниченным портам с использованием туннеля SSH или открытии портов в брандмауэре сервера.

  • Подключитесь к вашему облачному серверу с помощью PuTTY или другого SSH-клиента (инструкции).

  • В консоли сервера отредактируйте файл конфигурации проверки подлинности клиента PostgreSQL pg_hba.conf и добавьте следующее в конец, затем сохраните файл:

     хост все все все md5
     
  • Отредактируйте файл конфигурации PostgreSQL postgresql.conf и замените эту строку

     listen_address='127.0.0.1'
     

    с:

     listen_addresses = '*'
     
  • Сохраните файл.

  • Перезапустите сервер PostgreSQL:

     sudo /opt/bitnami/ctlscript.sh перезапустить postgresql
     

Теперь ваш сервер PostgreSQL настроен на прием удаленных подключений, и вы можете подключиться к нему с помощью pgAdmin 4. Выполните следующие действия:

  • Запустить pgAdmin 4.

  • Перейти на вкладку «Панель инструментов». В разделе «Быстрая ссылка» нажмите «Добавить новый сервер», чтобы добавить новое подключение.

  • Выберите вкладку «Подключение» в окне «Создать сервер».

  • Затем настройте соединение следующим образом:

  • Введите IP-адрес вашего сервера в поле «Имя хоста/адрес».

  • Укажите «Порт» как «5432».

  • Введите имя базы данных в поле «Обслуживание базы данных».

  • Введите имя пользователя postgres и пароль (используйте тот же пароль, который вы использовали при предыдущей настройке сервера для приема удаленных подключений) для базы данных.