PostgreSQL: no pg_hba.conf entry for host — что делать
Подключение дошло до базы, но в файле pg_hba.conf нет строки, которая разрешает его: с этого адреса, этому пользователю, к этой базе. Нужно добавить строку для одного адреса и перечитать настройки. Перезапуск не нужен.
Содержание 8
Как выглядит ошибка
FATAL: no pg_hba.conf entry for host "203.0.113.5", user "ivan", database "shop", no encryptionpsql или сайт показывают эту строку после слов connection to server at … failed:. Что в ней:
host "203.0.113.5"— адрес, с которого пришло подключение, как его видит база. Это адрес компьютера или сервера, откуда подключаются, а не адрес базы.user "ivan"иdatabase "shop"— под каким пользователем и к какой базе.no encryption— подключение без шифрования. БываетSSL encryption— с шифрованием SSL, иGSS encryption— с шифрованием GSSAPI.
Раз база ответила, сеть и порт в порядке. Не пустил файл pg_hba.conf.
Как устроен pg_hba.conf
Каждая строка файла — правило: тип подключения, база, пользователь, адрес и способ проверки. База читает строки сверху вниз и берёт первую подходящую. Если не подошла ни одна, вход запрещён — это и есть ошибка.
| Тип | Какие подключения |
|---|---|
local | через файл-сокет на самом сервере |
host | по сети, с шифрованием SSL или без |
hostssl | по сети, только с шифрованием SSL |
hostnossl | по сети, только без SSL |
Файл лежит в папке настроек базы: /etc/postgresql/16/main/pg_hba.conf. В примерах — PostgreSQL 16 из Ubuntu 24.04. В Ubuntu 26.04 ставится PostgreSQL 18: в путях и командах вместо 16 подставьте 18.
Шаг 1. Проверьте, нужно ли это подключение
- Сайт и база на одном сервере, а в сообщении — внешний адрес сервера. В настройках сайта указан внешний адрес базы. Поставьте
127.0.0.1: для него Ubuntu уже разрешает вход по паролю. - Адрес в сообщении незнакомый, а вы ничего не подключали. Это чужая попытка войти: база слушает внешний адрес, и порт 5432 открыт. Строку для такого адреса не добавляйте, а закройте порт — как не открыть базу всему интернету.
- Адрес ваш: другой сервер с сайтом или ваш компьютер. Переходите к шагу 2. Для своего компьютера удобнее SSH-туннель без правки pg_hba.conf — как подключиться через туннель.
Шаг 2. Добавьте строку для одного адреса
Откройте файл на сервере с базой:
sudo nano /etc/postgresql/16/main/pg_hba.confВ конец файла добавьте строку. Вместо shop — имя базы, вместо ivan — имя пользователя, вместо 203.0.113.5 — адрес из сообщения об ошибке:
hostssl shop ivan 203.0.113.5/32 scram-sha-256/32 значит ровно один адрес. scram-sha-256 — вход по паролю, который не передаётся по сети в открытом виде. hostssl пускает только подключения с шифрованием SSL.
Если в сообщении было no encryption, программа подключается без шифрования, и строка hostssl ей не подойдёт. Включите шифрование в настройках программы или напишите в начале строки host вместо hostssl.
Сохраните файл: в nano — Ctrl+O и Enter, выйти — Ctrl+X.
0.0.0.0/0 или all, а вместо способа проверки — trust: первое пустит к базе с любого адреса, второе — без пароля.Шаг 3. Перечитайте настройки
sudo pg_ctlcluster 16 main reloadКоманда перечитывает настройки без перезапуска: подключённые сайты не отключатся. Затем подключитесь снова.
Проверить, нет ли в файле ошибок, можно в psql администратора: войдите командой sudo -u postgres psql и выполните
SELECT line_number, error FROM pg_hba_file_rules WHERE error IS NOT NULL;Если ответ без строк, ошибок нет. Иначе в столбце error — что не так, в line_number — номер строки файла.
Если ошибка не изменилась
- Проверьте, тот ли это файл. На сервере может быть несколько баз PostgreSQL — список покажет
pg_lsclusters. Путь к файлу текущей базы покажет командаSHOW hba_file;в psql администратора. - Имена базы и пользователя в строке должны совпадать с теми, что в сообщении об ошибке.
- Адрес берите из сообщения: база видит адрес, с которого подключение пришло к ней.
- Если теперь пишет
password authentication failed— строка сработала, не подошёл пароль: разбор. - Если вместо этой ошибки
Connection refusedили долгое ожидание, подключение до базы не доходит: разбор Connection refused.
Источники
- PostgreSQL 16: Problems with Client Authentication — тексты ошибок входа; если имя базы не указано, берётся имя пользователя; подробности — в журнале сервера.
- PostgreSQL 16: The pg_hba.conf File — формат строк; файл перечитывается при запуске и по сигналу перезагрузки настроек.
- PostgreSQL 16: pg_hba_file_rules — строки pg_hba.conf и столбец error с ошибкой в строке; читать могут только суперпользователи.
- PostgreSQL 16: Password Authentication — scram-sha-256 не передаёт пароль по сети в открытом виде.
- Исходный код PostgreSQL 16: auth.c — тексты Peer authentication failed, password authentication failed и no pg_hba.conf entry.
- PostgreSQL 16: File Locations — настройка hba_file: путь к файлу pg_hba.conf.
- Справка pg_ctlcluster для Ubuntu 24.04 — запуск, остановка, перезапуск и reload кластера, журнал в /var/log/postgresql/.
- Документация Ubuntu Server: Install PostgreSQL — peer для подключений через сокет, scram-sha-256 для сетевых, настройки в /etc/postgresql/.
Сверено 14 октября 2026 года.
Что почитать дальше
- Ошибки PostgreSQLвсе разборы ошибок базы.
- Как не открыть базу всему интернетуlisten_addresses, pg_hba.conf и фаервол для базы на отдельном сервере.
- Порт 5432что слушает порт и как подключиться через SSH-туннель.
- Команда ufwкак открыть порт только для одного адреса.