Заметки · 28.11.2025

PostgreSQL отовсюду

Видимо, какой-то оракул объявил месяц 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 перезапускать не надо. Как только обновите страничку — заветный сервер появится в перечне подключений. На этом на сегодня всё. Удачи!