Ошибки

PostgreSQL: FATAL: role does not exist

В базе нет пользователя с таким именем. Если имя не указано, psql берёт имя пользователя системы, под которым вы вошли на сервер, а пользователи базы и системы — разные списки. Укажите пользователя базы ключом -U или создайте его.

≈ 5 мин чтения3 шага
Содержание 10

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

psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  role "anna" does not exist
  • role "anna" — имя пользователя базы, с которым psql пытался войти. В PostgreSQL пользователей называют ролями.
  • does not exist — пользователя с таким именем в базе нет.

Пользователи базы не совпадают с пользователями системы на сервере. Если имя не указано ключом -U, psql берёт имя пользователя системы: вошли на сервер как anna — psql попробует войти в базу тоже как anna.

Шаг 1. Укажите пользователя базы

Если у сайта уже есть пользователь базы, например ivan, укажите его ключом -U, а имя базы — последним словом:

psql -h 127.0.0.1 -U ivan shop

psql спросит пароль — введите пароль пользователя базы. Зачем -h 127.0.0.1 — в разборе ошибки peer.

Шаг 2. Посмотрите, какие пользователи есть в базе

Команды вводятся на сервере с базой: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне. Войдите в базу администратором:

sudo -u postgres psql

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

\du

Команда покажет пользователей базы. Если нужного имени в списке нет — создайте пользователя.

Имена без кавычек база приводит к строчным буквам: команда CREATE USER Anna создаст пользователя anna. Если в списке имя с заглавными буквами, в ключе -U пишите его точно так же, а в командах SQL берите в двойные кавычки: "Anna".

Шаг 3. Создайте пользователя

В том же окне psql, где строка ввода postgres=#, выполните команду. Вместо anna подставьте имя, вместо новый-пароль — свой пароль:

CREATE USER anna WITH PASSWORD 'новый-пароль';

Выйдите командой \q и войдите новым пользователем, указав базу:

psql -h 127.0.0.1 -U anna shop

Если базы для пользователя ещё нет, создайте её вместе с ним — пользователь и база для сайта.

Чтобы psql входил без ключей

Без ключей psql входит в базу через файл-сокет: имя пользователя и имя базы он берёт из имени пользователя системы. Чтобы так входил пользователь системы anna, создайте в базе пользователя и базу с тем же именем:

CREATE USER anna;
CREATE DATABASE anna OWNER anna;

Пароль не нужен: через файл-сокет Ubuntu проверяет вход способом peer — база пускает anna, потому что команда запущена от пользователя системы с тем же именем.

Если роль есть, но войти нельзя

FATAL:  role "ivan" is not permitted to log in

Пользователь в базе есть, но вход ему запрещён. Так бывает, если его создали командой CREATE ROLE: в отличие от CREATE USER, она по умолчанию создаёт роль без права входа. Разрешите вход из sudo -u postgres psql:

ALTER ROLE ivan LOGIN;

Если у роли не задан пароль, задайте его командой \password ivan.

Если подключаетесь по адресу

При подключении с ключом -h 127.0.0.1 или с другого сервера база сначала проверяет пароль. Если пользователя нет, psql покажет другую ошибку — password authentication failed for user, а причина Role "anna" does not exist. будет только в журнале базы. Разбор — password authentication failed.

Ошибки рядом

Что видитеЧто делать
FATAL: Peer authentication failed for userимя в системе не совпало с именем в базе
FATAL: database "anna" does not existтакой базы нет
FATAL: password authentication failed for userне подошёл пароль или пользователя нет

Источники

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

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