Ошибки

Ошибки PostgreSQL: как найти причину по тексту

PostgreSQL объясняет ошибку несколькими английскими словами. Найдите слова из своего сообщения в таблице — для каждой ошибки есть страница с исправлением по шагам.

≈ 7 мин чтения
Содержание 8

Найдите свою ошибку

Найдите в левой колонке слова из своего сообщения — после FATAL, ERROR или после слова failed.

Слова в сообщенииЧто случилосьЧто делать
Peer authentication failed for userПри входе через файл-сокет имя пользователя системы не совпало с именем в базеРазбор
password authentication failed for userПароль не подошёл, не задан или такого пользователя нетРазбор
no pg_hba.conf entry for hostВ pg_hba.conf нет строки, которая разрешает такое подключениеРазбор
Connection refusedБаза не запущена, работает на другом порту или не принимает подключения по этому адресуРазбор
on socket … No such file or directoryБаза не установлена, не запущена или работает на другом портуРазбор
role … does not existВ базе нет пользователя с таким именемРазбор
is not permitted to log inПользователь есть, но вход ему запрещёнРазбор
database … does not existБазы с таким именем нетРазбор
permission denied for databaseПользователю запрещено подключаться к базеРазбор
permission denied for schema publicС PostgreSQL 15 таблицы в схеме public создаёт только владелец базыРазбор
permission denied for tableУ пользователя нет прав на таблицуРазбор
must be owner of tableИзменить таблицу может только её владелецРазбор
sorry, too many clients already или remaining connection slots are reservedВсе места для подключений занятыРазбор
too many connections for roleУ пользователя свой предел подключенийРазбор

Как читать сообщение

psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  role "anna" does not exist
  • До слова failed: — куда подключался psql. on socket — через файл-сокет на этом же сервере, server at "127.0.0.1", port 5432 — по адресу и порту.
  • FATAL: — ответ самой базы: подключение до неё дошло, но она его закрыла. Причина — в словах после FATAL.
  • Если слова FATAL нет, а есть Connection refused, No such file or directory или Connection timed out — до базы подключение не дошло.
  • ERROR: — подключение открыто, но не выполнилась одна команда: например, не хватило прав.

Сайт показывает ту же ошибку своими словами или пишет её в свой журнал. Подробности, которые база не сообщает программе, — в журнале базы.

Как войти в базу администратором

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

sudo -u postgres psql

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

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

Работает ли PostgreSQL

pg_lsclusters

Команда покажет базы PostgreSQL на сервере — в PostgreSQL их называют кластерами. В строке каждого кластера есть его состояние: online — работает, down — остановлен. Если кластер в состоянии down, запустите его. В Ubuntu кластер, созданный при установке, называется main, 16 — номер версии:

sudo pg_ctlcluster 16 main start

Если кластер не запускается, причина — в журнале.

Где журнал

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

Команда покажет последние 30 строк журнала кластера main. Если вход не проходит из-за пароля, точная причина записана только здесь. В примерах — PostgreSQL 16 из Ubuntu 24.04. В Ubuntu 26.04 ставится PostgreSQL 18: в путях и командах вместо 16 подставьте 18.

Если база в облаке провайдера

В облачной базе команды sudo нет: пользователей, базы и пароли создают в панели провайдера. Адрес, порт, имя базы и пользователя берите там же. Доступ к облачной базе с других адресов настраивается в панели провайдера или через поддержку.

Тексты ошибок сверены с исходным кодом PostgreSQL 16 — эта версия ставится из пакетов Ubuntu 24.04. В других версиях строки могут немного отличаться.

Источники

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

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