Что это значит

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

Последний случай встречается после обновления PostgreSQL. Правило требует scram-sha-256, а пароль роли когда-то сохранён как md5.

Как проверить

В логе самой базы рядом с ошибкой есть строка DETAIL с точной причиной. Клиенту её не показывают намеренно.

select rolname, rolvaliduntil, left(rolpassword, 14) from pg_authid where rolname = 'rx';

Начало SCRAM-SHA-256 или md5 показывает, как сохранён пароль. Пустое значение означает, что пароля нет.

Что сделать

  1. Сверить пароль в настройках сервиса с тем, что задан роли. Спецсимволы в строке подключения часто ломают экранирование.
  2. При несовпадении способа: set password_encryption = 'scram-sha-256'; alter role rx password '...';.
  3. При истёкшем сроке: alter role rx valid until 'infinity';.
  4. Много таких ошибок с чужих адресов означает перебор паролей. Закройте порт базы от всех, кроме серверов приложений.