Проблема: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user, конфигурируем разрешенные соединения Postgres

Home » postgres » Проблема: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user, конфигурируем разрешенные соединения Postgres
postgres Комментарии (2)

Ошибка аутентификации Postgres org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user*

1) Первое что следует сделать – проверить пароль пользователя БД и его соответствие в параметрах подключения

2) Второе, если первое не помогло – попробовать изменить настройки доступа в файле конфигурации Postgres – pg_hba.conf,
например(в зависимости от ОС место установки может различаться) путь к нему может быть таким: /var/lib/pgsql/data/pg_hba.conf

значения по умолчанию:

сменим на

И перезагрузим конфиг Postgres

Проверим соединение: если ошибка пропала, то проблема выявлена и нам необходимо настроить доступ(нам может понадобиться удаленное соединение с БД, а также по причинам безопасности, нас такое решение может не устраивать).
Восстановим значения доступа в файле pg_hba.conf

Ознакомимся с документацией с официального сайта БД Postgres

Документация нам говорит:

[…]Аутентификация – процесс при котором сервер базы данных идентифицирует клиента, а также определяет разрешено ли клиентскому приложению(или пользователю запускающему клиентское приложение) соединяться с сервером по требующемуся имени пользователя БД.<.em>

PostgreSQL предлагает несколько разных методов клиентской аутентификации. Метод используемый для аутентификации соединения определенного клиента может быть основан на адресе хоста(клиента), настройках базы данных и пользователе.<.em>

Имя пользователя базы данных PostgreSQL логически отличается от имени пользователя в операционной системе, на которой работает сервер. Если все пользователи какого-то сервера также имеют аккаунты в его операционной системе имеет смысл назначать имена пользователей БД, которые бы совпадали с именами пользователей в операционной системе. Однако сервер БД который принимает удаленные подключения может иметь много пользователей БД, которые не имеют аккаунтов в ОС, в таком случае, конечно, нам не требуется соответствий имен пользователей БД и пользователей ОС.”

Файл pg_hba.conf

Клиентская аутентификация контроллируется конфигурационным файлом, традиционно именуемым pg_hba.conf и расположенным в папке с кластером баз – data.(HBA stands for host-based authentication.) Файл по умолчанию pg_hba.conf создается, когда каталог data создается с помощью команды initdb. Файл можно располагать где угодно, однако следует не забывать про конфигурацию параметров в файле hba_file.

Формат файла pg_hba.conf подразумевает набор записей на каждой строке. Пустые строки игнорируются как и закомментированные с помощью #.
Перенос срок запрещен. “Запись” состоит из полей отделенных пробелами или табуляцией. Поля могут содержать неразрывные пробелы(white-space – несколько пробелов как один) если значение поля заключено в двойные кавычки. Заключение в кавычки одного из ключевых слов в полях database, user, или address (например all или replication) приводит к потере ключевым словом значения, и просто приводит к тому что database читается как имя базы “database”, user – имя пользователя – “user” и т.д.

Каждая запись определяет тип соединения, диапазон IP-адресов(если они подходят по типу соединения), имя базы данных, имя пользователя и метод аутентификации для установления соединений по указанным параметрам. Первая же запись подходящая по параметрам адреса, имени базы, имени пользователя и т. д. используется для реализации аутентификации. Причем(!) если аутентификация по данной записи не проходит, не осуществляется никаких проверок и других попыток провести аутентификацию с помощью других записей.
Если ни одна запись не соответствует параметрам соединения – соединение запрещается.[…]”

Итак, нам необходимо создать запись для нашего подключения и перегрузить конфиг Postgres, что и сделаем
мы читаем про разные типы аутентификации и обнаруживаем md5 – аутентификация по паролю, это нам подходит, –
изменяем запись(или создаем новую запись и располагаем ее над остальными(так как порядок записей/строк имеет значение!))

Примечания

документация

*проявить ошибку подключения можно с помощью подобного кода

2 thoughts on - Проблема: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user, конфигурируем разрешенные соединения Postgres

  • The order of authentication configuration in pg_hba.conf is relevant in your case I think. The default configuration file includes several lines in a vanilla install. These defaults can match the conditions of your authentication attempts resulting in a failure to authenticate. It fails regardless of additional configuration added at the end of the .conf file.

    • hello! you mean if I change this Order, I shall solve the problem with authentification?
      # “local” is for Unix domain socket connections only
      local all all peer
      # IPv4 local connections:
      host all all 127.0.0.1/32 ident
      # IPv6 local connections:
      host all all ::1/128 ident

      or I just need to notice that my configuration line, I have to place first, above other lines?

LEAVE A COMMENT