Видимо, какой-то оракул объявил месяц PostgreSQL. Постараюсь закрыть тему, которую поднял в статье про установку PostgreSQL. Сегодня попробуем подключиться к удалённому серверу PostgreSQL из PgAdmin4 и phpPgAdmin.
Настройка доступности движка СУБД для средств администрирования одинакова, как для Windows, так и для Linux, но проводить основную настройку я буду на примере Linux Mint 22. Отличие от специфики настройки в ОС Windows заключается только в путях к нужным конфигурационным файлам.
В Linux пути к файлам выглядят так (вероятны вариации из-за различия дистрибутивов):
/etc/postgresql/VERSION/main/postgresql.conf /etc/postgresql/VERSION/main/pg_hba.conf
В Windows они же:
C:\Program Files\PostgreSQL\VERSION\data\postgresql.conf C:\Program Files\PostgreSQL\VERSION\data\pg_hba.conf
Соответственно на месте VERSION нужно проставить целевую версию установленного экземпляра PostgreSQL.
Важный момент! Перед тем, как издеваться проводить эксперименты над файлами конфигураций убедитесь, что открыт и добавлен в исключения Вашего межсетевого экрана нужный порт для взаимодействия с СУБД. Как правило, это порт 5432.
Например, с помощью PowerShell проверить доступность порта 5432 удалённого узла с IP-адресом 192.168.1.100 можно так:
Test-NetConnection -ComputerName 192.168.1.100 -Port 5432
Итак, смоделируем ситуацию: есть подсеть 192.168.1.0/24 и в ней присутствует сервер баз данных с IP-адресом 192.168.1.11. Нам нужно обеспечить подключение к ядру СУБД для всех компьютеров подсети. Предположим, что на одном из компьютеров установлен PgAdmin4. Вот с него и попробуем подключиться к серверу.
Как рекомендуют мудрецы и документация, нам потребуется внести изменения в файл postgresql.conf. Открываем этот файл в любом редакторе и ищем строку listen_addresses. Для доступа с любого хоста из сети нужно приравнять этот параметр к звёздочке.
listen_addresses = '*'
В этом же файле можно изменить и порт PostgreSQL. За эту настройку отвечает директива port.
Вот так выглядит содержимое файла postgresql.conf в моём случае:
Сохраняемся, выходим и радостные бежим подключаться.
И вот — при первой же попытке приконнектится к движку базы данных PostgreSQL из PgAdmin4 — я получил ошибку:
Специально для поисковиков продублирую самую важную часть: no pg_hba.conf entry for host [IP], user «postgres», database «postgres».
Хорошо, что в тексте ошибки указаны и сама проблема, и имя нужного файла. Путь уже есть. Идём в файл pg_hba.conf и вносим туда нужную подсеть. В случае нашей ситуации это заветная 192.168.1.0/24.
Как только все изменения сохранены — нужно перезапустить PostgreSQL:
sudo systemctl restart postgresql
После перезапуска службы СУБД, запускаем PgAdmin4 и подключаемся к серверу. Если все адреса сервера и учётные данные были введены корректно — моментально проходит подключение и вуаля:

А теперь расскажу, как подключиться к удалённому серверу PostgreSQL из веб-среды администрирования phpPgAdmin. Там подключение осуществляется из конфигурационного php-скрипта phpPgAdmin. Более того в этом скрипте даже есть пример подключения к версии PostgreSQL для Windows.
Открываем уже знакомый нам конфигурационный файл:
sudo nano /etc/phppgadmin/config.inc.php
Видим закомментированный блок Example for a second server (PostgreSQL for Windows). Оживляем блок и вносим корректные данные:
Только проследите, чтобы в параметрах pg_dump_path и pg_dumpall_path были указаны корректные пути. Как правило, требуется только обновить номер версии.
В случае с phpPgAdmin службу PostgreSQL перезапускать не надо. Как только обновите страничку — заветный сервер появится в перечне подключений. На этом на сегодня всё. Удачи!



