Главная / Справочник ошибок / PostgreSQL
PostgreSQL отклонил пароль
FATAL: password authentication failed for user "rx"
password authentication failed for user в PostgreSQL: неверный пароль, пользователь без пароля или несовпадение способа хеширования md5 и scram-sha-256.
Что это значит
Правило в 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 показывает, как сохранён пароль. Пустое значение означает, что пароля нет.
Что сделать
- Сверить пароль в настройках сервиса с тем, что задан роли. Спецсимволы в строке подключения часто ломают экранирование.
- При несовпадении способа:
set password_encryption = 'scram-sha-256'; alter role rx password '...';. - При истёкшем сроке:
alter role rx valid until 'infinity';. - Много таких ошибок с чужих адресов означает перебор паролей. Закройте порт базы от всех, кроме серверов приложений.