Ошибка Ident в PostgreSQL (SQLSTATE 28000): как исправить.

PostgreSQL: пользователь не прошел проверку подлинности (Ident)

Ошибка пользователь «X» не прошёл проверку подлинности (Ident) (FATAL, SQLSTATE 28000) означает, что подключение попало под правило в pg_hba.conf с методом ident, но имя пользователя ОС не удалось сопоставить с ролью PostgreSQL. Проблема в настройке аутентификации, а не в пароле.

Частые причины

  • Имя пользователя ОС не совпадает с именем роли PostgreSQL, а сопоставление в pg_ident.conf не задано.
  • В pg_hba.conf для подключения выбран метод ident/peer, хотя ожидался вход по паролю.
  • Для TCP-подключения недоступен или не запущен ident-сервер (RFC 1413) на стороне клиента.
  • В правиле указан map=, но соответствующей записи в pg_ident.conf нет.

Как исправить

  1. Найдите файл правил: SHOW hba_file;, откройте pg_hba.conf.
  2. Чтобы входить по паролю – смените метод на scram-sha-256:
    # TYPE DATABASE USER ADDRESS METHOD
    host all all 127.0.0.1/32 scram-sha-256
  3. Либо оставьте ident и задайте сопоставление в pg_ident.conf, сослав на него из правила (ident map=mymap):
    # MAPNAME SYSTEM-USERNAME PG-USERNAME
    mymap osuser dbuser
  4. Перечитайте конфигурацию: SELECT pg_reload_conf();

Бесплатный 7‑дневный аудит PostgreSQL с PGLens

PGLens остается у вас для полноценного тестирования еще до 90 дней БЕСПЛАТНО