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
Добавьте следующую строку внизу
pg_hba.conf
:hostnossl все все 0.0.0.0/0 md5
Добавить/изменить строку в
postgresql.conf
:listen_addresses = '*'
УБЕДИТЕСЬ, ЧТО подключающийся пользователь имеет пароль: (Пример подключения пользователя с именем
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 hostpostgres /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 и пароль (используйте тот же пароль, который вы использовали при предыдущей настройке сервера для приема удаленных подключений) для базы данных.