PostgreSQL: password authentication failed for user — что делать
База не приняла вход по паролю. Причин четыре: пароль неверный, такого пользователя в базе нет, у пользователя не задан пароль или истёк срок пароля. Сообщение одно на все случаи, а точную причину база пишет в свой журнал.
Содержание 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 ivanpsql попросит ввести новый пароль. Символы при вводе не видны; если 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 — другой разбор.
Источники
- PostgreSQL 16: Problems with Client Authentication — тексты ошибок входа; если имя базы не указано, берётся имя пользователя; подробности — в журнале сервера.
- Исходный код PostgreSQL 16: auth.c — тексты Peer authentication failed, password authentication failed и no pg_hba.conf entry.
- Исходный код PostgreSQL 16: crypt.c — пояснения для журнала: роли нет, пароль не задан, не совпал или истёк.
- PostgreSQL 16: psql — команды \du, \l, \c и \password.
- PostgreSQL 16: Lexical Structure — имена без кавычек приводятся к строчным буквам.
- PostgreSQL 16: ALTER ROLE — LOGIN, CONNECTION LIMIT и VALID UNTIL 'infinity': пароль без срока.
- Справка pg_ctlcluster для Ubuntu 24.04 — запуск, остановка, перезапуск и reload кластера, журнал в /var/log/postgresql/.
- Справка pg_lsclusters для Ubuntu 24.04 — список кластеров и их состояние: online или down.
Сверено 14 октября 2026 года.
Что почитать дальше
- Ошибки PostgreSQLвсе разборы ошибок базы.
- Как установить PostgreSQL на Ubuntuпользователь и база для сайта.
- MySQL 1045: Access denied for userесли база MySQL или MariaDB.