PostgreSQL: ошибка pg_hba.conf rejects connection for host — как разрешить доступ
- 1С не может подключиться к базе данных на сервере PostgreSQL.
- В окне ошибки отображается:
FATAL: no pg_hba.conf entry for host "192.168.1.50", user "postgres", database "ib_1c", no encryption. - Утилита pgAdmin или сервер 1С не может авторизоваться на удаленном сервере СУБД.
Что означает эта ошибка простыми словами
PostgreSQL в целях безопасности по умолчанию блокирует все входящие подключения с любых других компьютеров сети. Файл pg_hba.conf — это внутренний список разрешенных IP-адресов и способов авторизации. Если нужного компьютера или подсети в нем нет, сервер отклоняет запрос.
Шаг 1. Поиск файла pg_hba.conf
Файл конфигурации располагается в каталоге данных PostgreSQL:
- В Linux:
/var/lib/pgsql/data/pg_hba.confили/etc/postgresql/15/main/pg_hba.conf - В Windows:
C:\Program Files\PostgreSQL 15 1C\data\pg_hba.conf
Шаг 2. Добавление разрешающего правила
- Откройте файл
pg_hba.confв текстовом редакторе (например, Блокнот илиnano). - Прокрутите файл в самый низ и добавьте строку для вашей локальной сети:
# Разрешить подключение для сервера 1С со всей локальной подсети
host all all 192.168.1.0/24 md5
# Или разрешить только для одного конкретного IP-адреса сервера 1С:
host all all 192.168.1.50/32 md5Шаг 3. Проверка прослушивания сети в postgresql.conf
- В той же папке откройте файл
postgresql.conf. - Найдите параметр
listen_addressesи установите:
listen_addresses = '*'Шаг 4. Перезапуск службы PostgreSQL
# Для Linux:
systemctl restart postgresql-15
# Для Windows:
Restart-Service postgresql* Частые вопросы (FAQ)
Что означает метод аутентификации md5 или scram-sha-256?
Это алгоритм шифрования паролей при проверке подлинности. Для 1С версий платформы 8.3 рекомендуется использовать метод md5 или scram-sha-256 (в зависимости от настроек пользователя базы).
Безопасно ли указывать host all all 0.0.0.0/0 md5?
Указание 0.0.0.0/0 разрешает подключение с любого IP в мире. В продакшене это крайне небезопасно, указывайте только диапазон вашей внутренней локальной сети.
Нужно ли перезагружать весь сервер после правки pg_hba.conf?
Нет, достаточно выполнить команду pg_ctl reload или перезапустить службу PostgreSQL.
Какой сетевой порт использует PostgreSQL по умолчанию?
По умолчанию используется TCP порт 5432. Убедитесь, что он открыт в брандмауэре (ufw/firewalld/Windows Defender).