Ошибки

PostgreSQL: password authentication failed for user — что делать

База не приняла вход по паролю. Причин четыре: пароль неверный, такого пользователя в базе нет, у пользователя не задан пароль или истёк срок пароля. Сообщение одно на все случаи, а точную причину база пишет в свой журнал.

≈ 4 мин чтения4 шага
Содержание 8

Как выглядит ошибка

psql: error: connection to server at "127.0.0.1", port 5432 failed: FATAL:  password authentication failed for user "ivan"
  • at "127.0.0.1", port 5432 — куда подключались: адрес и порт базы.
  • FATAL: — ответ базы: подключение до неё дошло, но вход не прошёл.
  • for user "ivan" — под каким именем пытались войти.

Сайт или программа показывают ту же фразу password authentication failed for user внутри своего сообщения об ошибке.

Шаг 1. Посмотрите причину в журнале

Программе, которая подключается, база не говорит, что именно не так. Причину она пишет в свой журнал. На сервере с базой выполните:

sudo tail -n 30 /var/log/postgresql/postgresql-16-main.log

Если система спросит пароль, введите пароль своего пользователя на сервере, а не пароль базы. Символы при вводе не видны — наберите пароль и нажмите Enter. В примерах — PostgreSQL 16 из Ubuntu 24.04. В Ubuntu 26.04 ставится PostgreSQL 18: в путях и командах вместо 16 подставьте 18.

Под строкой с password authentication failed будет строка с пояснением, после слова DETAIL:

ПояснениеЧто значитЧто делать
Password does not match for user "ivan".пароль неверныйзадайте новый пароль
User "ivan" has no password assigned.пароль у пользователя не заданзадайте пароль
Role "ivan" does not exist.пользователя с таким именем нетпроверьте имя
User "ivan" has an expired password.срок пароля истёкснимите срок

Шаг 2. Задайте новый пароль

Войдите в базу администратором:

sudo -u postgres psql

Строка ввода сменится на postgres=#. Задайте пароль командой psql, вместо ivan — имя пользователя из сообщения:

\password ivan

psql попросит ввести новый пароль. Символы при вводе не видны; если psql попросит повторить, введите пароль ещё раз. Выйдите командой \q и проверьте вход, вместо shop — имя базы:

psql -h 127.0.0.1 -U ivan shop

Строка shop=> значит, что пароль подошёл. Впишите тот же пароль в настройки сайта.

Пароль базы и пароль от сервера — разные пароли. Проверьте раскладку клавиатуры и Caps Lock. Если пароль копируете, следите, чтобы не захватить лишний пробел.

Шаг 3. Проверьте имя пользователя

В psql администратора выполните \du — psql покажет пользователей базы. В PostgreSQL они называются ролями.

Имена без кавычек база переводит в строчные буквы: команда CREATE USER Ivan создаёт пользователя ivan. Если нужного пользователя нет, создайте его — как это сделать.

Шаг 4. Если срок пароля истёк

Срок пароля задают словами VALID UNTIL при создании пользователя. Снять срок можно в psql администратора:

ALTER USER ivan VALID UNTIL 'infinity';

После этого прежний пароль снова работает.

Если не помогло

  • В журнале нет записи о вашей попытке — подключение ушло в другую базу. Проверьте адрес и порт в сообщении. На сервере может работать несколько баз PostgreSQL на разных портах: список покажет команда pg_lsclusters.
  • Вместо этой ошибки — Peer authentication failed: разбор.
  • Вместо этой ошибки — no pg_hba.conf entry: разбор.
  • База MySQL или MariaDB, ошибка 1045 — другой разбор.

Источники

Сверено 14 октября 2026 года.

Что почитать дальше