PostgreSQL не пускает с этого адреса
no pg_hba.conf entry for host: в настройках доступа PostgreSQL нет правила для этого адреса, пользователя и базы. Как дописать правило и применить без перезапуска.
Что это значит
PostgreSQL проверяет каждое подключение по файлу pg_hba.conf. Для сочетания адреса, пользователя, базы и способа шифрования из сообщения подходящей строки не нашлось. Пароль до проверки не дошёл.
Ошибка появляется после переезда сервисов на другой адрес, добавления нового сервера приложений, смены сети контейнеров или включения обязательного TLS.
Как проверить
Сообщение уже содержит всё нужное: адрес клиента, пользователь, база и было ли шифрование (SSL encryption или no encryption). Посмотрите действующие правила:
select line_number, type, database, user_name, address, auth_method, error from pg_hba_file_rules;
Заполненная колонка error показывает строку с опечаткой: такую строку PostgreSQL игнорирует.
Что сделать
- Добавить строку под нужный адрес, например
host rx rx 10.0.0.5/32 scram-sha-256. Для подключений с TLS типhostssl. - Применить:
select pg_reload_conf();. Перезапуск не нужен. - Не открывать
0.0.0.0/0ради скорости: указывайте подсеть серверов приложений. - Проверить
listen_addresses: если база слушает толькоlocalhost, правило не поможет, а изменение этого параметра требует перезапуска.