Правило в pg_hba.conf явно запрещает это подключение
«FATAL: pg_hba.conf rejects connection for host "...", user "...", database "...", SSL encryption» в PostgreSQL: в файле доступа есть правило reject, и подключение попало под него. Чем отличается от «no pg_hba.conf entry» и как найти правило.
Что это значит
PostgreSQL проверяет правила pg_hba.conf сверху вниз и применяет первое подходящее по типу подключения, базе, пользователю и адресу. Эта ошибка значит, что первым подошло правило с методом reject. От похожей no pg_hba.conf entry она отличается тем, что правило есть, но запрещающее.
Важна и концовка текста: SSL encryption или no encryption. Правила hostssl и hostnossl срабатывают только для подключений с шифрованием или без него, и клиент с другими настройками SSL может попасть на чужое правило, например на запрещающее в конце файла.
Как проверить
SELECT line_number, type, database, user_name, address, auth_method
FROM pg_hba_file_rules ORDER BY line_number;
Найдите первое правило сверху, которое подходит под адрес, пользователя, базу и тип подключения из текста ошибки. Если это reject, вот и причина.
Что сделать
- Добавить разрешающее правило для этого клиента выше запрещающего.
- Применить без перезапуска:
SELECT pg_reload_conf();, затем проверитьpg_hba_file_rulesна ошибки в колонкеerror. - Если запрет поставлен намеренно, например от подключений с балансировщика или без SSL, поправить настройки клиента, а не правило.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать