DBAtlas · Атлас эксплуатации баз данных

Проверить порядок правил pg_hba.conf и безопасно перечитать конфигурацию

PostgreSQLБезопасность

Команда

-- File location
SHOW hba_file;

# Rules are read top to bottom and the FIRST matching rule wins;
# specific rules must come BEFORE general ones:
#   hostssl  appdb  web_app  10.10.0.0/16  scram-sha-256
#   host     all    all      10.10.0.0/16  reject
#   host     all    all      0.0.0.0/0     scram-sha-256

-- Validate BEFORE reloading: pg_hba_file_rules reads the file on disk
SELECT line_number, type, database, user_name, address, netmask, auth_method, error
FROM pg_hba_file_rules
ORDER BY line_number;

-- Apply if the error column is empty
SELECT pg_reload_conf();

Что делает

Показывает, где находится pg_hba.conf, как PostgreSQL его интерпретирует (строка, тип, база данных, пользователь, адрес, метод) и синтаксические ошибки до reload; затем перечитывает конфигурацию.

Когда использовать

При добавлении новой клиентской сети/приложения, переходе с md5 на scram-sha-256 или расследовании ошибок 'no pg_hba.conf entry for host'.

Внимание

pg_hba_file_rules показывает файл в текущем виде, а не действующие правила. Если в какой-либо строке error не пуст, reload вообще НЕ загружает pg_hba.conf, и продолжают действовать старые правила (в журнале: 'pg_hba.conf was not reloaded'). Изменения влияют только на новые подключения. Широкое правило, размещённое в начале (например, host all all 0.0.0.0/0 trust), нейтрализует все ограничения после него. При выключенном SSL строки hostssl не могут совпасть и показывают сообщение в столбце error. По умолчанию читать представление могут только суперпользователи. Убедитесь, что инструменты, редактирующие файл от root, не меняют его владельца; если пользователь postgres не может его прочитать, reload завершается ошибкой.

Открыть в DBAtlas →

Связанные материалы