Ошибки

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

Способ peer пускает в базу, только если имя пользователя в системе совпадает с именем пользователя базы. Ошибка значит, что на сервер вы вошли под одним именем, а в базу просились под другим. Помогает вход через sudo -u postgres psql или адрес -h 127.0.0.1 в команде.

≈ 4 мин чтения
Содержание 9

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

psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"
  • on socket "/var/run/postgresql/.s.PGSQL.5432" — psql подключался через файл-сокет на самом сервере, а не по сети.
  • FATAL: — дальше ответ самой базы: подключение до неё дошло, но она не пустила.
  • Peer authentication failed — не прошла проверка способом peer.
  • for user "postgres" — имя пользователя базы, под которым просились войти.

Ошибка выходит на команды вроде psql -U postgres или psql -U ivan shop без адреса, если на сервер вы вошли под пользователем с другим именем, например anna.

Почему так

Для подключений через файл-сокет Ubuntu настраивает способ peer. База спрашивает у системы, от какого пользователя запущена программа, и пускает, только если это имя совпадает с именем пользователя базы. Пароль при этом не спрашивается и не помогает.

Поэтому пользователь системы anna не войдёт в базу как postgres или ivan даже с правильным паролем. В примерах — PostgreSQL 16 из Ubuntu 24.04. В Ubuntu 26.04 ставится PostgreSQL 18: в путях и командах вместо 16 подставьте 18.

Если нужно войти администратором

sudo -u postgres psql

Команда запускает psql от имени пользователя системы postgres. Имена совпадают, и peer пускает. Если система спросит пароль, введите пароль своего пользователя на сервере, а не пароль базы. Символы при вводе не видны — наберите пароль и нажмите Enter. Строка ввода сменится на postgres=#. Выйти — \q.

Если нужно войти пользователем сайта

Добавьте в команду адрес -h 127.0.0.1. Вместо ivan подставьте имя пользователя базы, вместо shop — имя базы:

psql -h 127.0.0.1 -U ivan shop

С адресом psql подключается по сети, а для сетевых подключений Ubuntu настраивает проверку пароля способом scram-sha-256. psql спросит пароль — введите пароль пользователя базы, а не пароль от сервера. Строка shop=> значит, что вход прошёл.

Если пароль не подходит — разбор ошибки password authentication failed. Если пароль не задан или забыт — как задать новый.

Если пароль не задан или забыт

Войдите администратором через sudo -u postgres psql и выполните команду psql, вместо ivan — имя пользователя:

\password ivan

psql попросит ввести новый пароль. Символы при вводе не видны; если psql попросит повторить, введите пароль ещё раз. Пароль не попадёт в историю команд. Выйдите командой \q и проверьте вход с адресом -h 127.0.0.1.

Если сайт подключается без адреса

Если в настройках сайта или программы адрес базы не указан, подключение может пойти через файл-сокет и попасть на peer. Укажите адрес 127.0.0.1 или localhost, порт 5432, имя пользователя и пароль базы.

Не меняйте в pg_hba.conf способ peer на trust: trust пускает в базу без проверки любого, кто может к ней подключиться.

Ошибки рядом

Что видитеЧто делать
password authentication failed for userпароль не подошёл
role "anna" does not existтакого пользователя в базе нет
failed: No such file or directoryбаза не запущена или нет файла сокета
database "ivan" does not existне указано имя базы

Источники

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

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