PostgreSQL: Peer authentication failed for user — что делать
Способ peer пускает в базу, только если имя пользователя в системе совпадает с именем пользователя базы. Ошибка значит, что на сервер вы вошли под одним именем, а в базу просились под другим. Помогает вход через sudo -u postgres psql или адрес -h 127.0.0.1 в команде.
Содержание 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 ivanpsql попросит ввести новый пароль. Символы при вводе не видны; если psql попросит повторить, введите пароль ещё раз. Пароль не попадёт в историю команд. Выйдите командой \q и проверьте вход с адресом -h 127.0.0.1.
Если сайт подключается без адреса
Если в настройках сайта или программы адрес базы не указан, подключение может пойти через файл-сокет и попасть на peer. Укажите адрес 127.0.0.1 или localhost, порт 5432, имя пользователя и пароль базы.
Ошибки рядом
| Что видите | Что делать |
|---|---|
password authentication failed for user | пароль не подошёл |
role "anna" does not exist | такого пользователя в базе нет |
failed: No such file or directory | база не запущена или нет файла сокета |
database "ivan" does not exist | не указано имя базы |
Источники
- PostgreSQL 16: Peer Authentication — способ peer берёт имя пользователя у операционной системы и работает только для подключений с самого сервера.
- Документация Ubuntu Server: Install PostgreSQL — peer для подключений через сокет, scram-sha-256 для сетевых, настройки в /etc/postgresql/.
- Исходный код PostgreSQL 16: auth.c — тексты Peer authentication failed, password authentication failed и no pg_hba.conf entry.
- Исходный код PostgreSQL 16: fe-connect.c — начало сообщения psql: socket или server at, и подсказки Is the server running.
- PostgreSQL 16: psql — команды \du, \l, \c и \password.
- Справка pg_createcluster для Ubuntu 24.04 — сокет в /var/run/postgresql/, файлы кластера в /etc/postgresql/версия/имя/, порт — первый свободный начиная с 5432.
Сверено 14 октября 2026 года.
Что почитать дальше
- Ошибки PostgreSQLвсе разборы ошибок базы.
- Как установить PostgreSQL на Ubuntuустановка, пользователь и база для сайта.
- Порт 5432как подключиться к базе со своего компьютера через SSH-туннель.