PostgreSQL: FATAL: database does not exist
Базы с таким именем на сервере нет. Если имя базы не указано, psql берёт имя пользователя: команда psql -U ivan ищет базу ivan. Укажите имя базы последним словом команды или создайте базу.
Содержание 8
Как выглядит ошибка
psql: error: connection to server at "127.0.0.1", port 5432 failed: FATAL: database "ivan" does not existdatabase "ivan"— имя базы, к которой подключался psql.does not exist— базы с таким именем на сервере нет.
Если имя базы не указано, psql подставляет имя пользователя. Команда psql -h 127.0.0.1 -U ivan ищет базу ivan, а база сайта может называться иначе, например shop.
Шаг 1. Укажите имя базы
psql -h 127.0.0.1 -U ivan shopИмя базы — последнее слово команды. Если ошибку показывает сайт, проверьте имя базы в его настройках: оно указывается отдельно от имени пользователя.
Шаг 2. Посмотрите список баз
Команды вводятся на сервере с базой: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне. Войдите в базу администратором:
sudo -u postgres psqlКоманда открывает psql — программу для работы с базой — от имени администратора базы postgres. Если система спросит пароль, введите пароль своего пользователя на сервере, а не пароль базы. Символы при вводе не видны — наберите пароль и нажмите Enter. Строка ввода сменится на postgres=#: теперь можно вводить команды для базы. Каждая команда SQL заканчивается точкой с запятой. Выйти — \q. Затем введите:
\lКоманда покажет базы на сервере и их владельцев. Если нужной базы в списке нет — создайте её.
Имена без кавычек база приводит к строчным буквам: команда CREATE DATABASE Shop создаст базу shop. Если в списке имя с заглавными буквами, в psql пишите его точно так же.
Шаг 3. Создайте базу
В том же окне psql, где строка ввода postgres=#, выполните команду. Вместо shop подставьте имя базы, вместо ivan — пользователя сайта:
CREATE DATABASE shop OWNER ivan;Слова OWNER ivan делают пользователя сайта владельцем базы: в своей базе он может создавать таблицы. Без них владельцем станет тот, кто выполнил команду, — postgres, и сайту не хватит прав: появится ошибка permission denied for schema public.
Если пользователя ivan ещё нет, сначала создайте его — пользователь и база для сайта. Выйдите командой \q и проверьте вход:
psql -h 127.0.0.1 -U ivan shopЕсли ошибка permission denied for database
FATAL: permission denied for database "shop"
DETAIL: User does not have CONNECT privilege.База есть, но пользователю запрещено к ней подключаться. Право подключаться по умолчанию есть у всех пользователей — значит, его кто-то отозвал. Верните право из sudo -u postgres psql:
GRANT CONNECT ON DATABASE shop TO ivan;Ошибки рядом
| Что видите | Что делать |
|---|---|
FATAL: role "ivan" does not exist | такого пользователя в базе нет |
ERROR: permission denied for schema public | пользователю не хватает прав в базе |
connection to server at … failed: Connection refused | база не принимает подключения |
Источники
- PostgreSQL 16: Problems with Client Authentication — тексты ошибок входа; если имя базы не указано, берётся имя пользователя; подробности — в журнале сервера.
- Исходный код PostgreSQL 16: postinit.c — тексты database does not exist и permission denied for database.
- PostgreSQL 16: psql — команды \du, \l, \c и \password.
- PostgreSQL 16: CREATE DATABASE — без OWNER владельцем базы становится тот, кто выполнил команду.
- PostgreSQL 16: Lexical Structure — имена без кавычек приводятся к строчным буквам.
- PostgreSQL 16: Privileges — какие права даются всем по умолчанию: на базу — CONNECT, на таблицы и последовательности — никаких.
- PostgreSQL 16: GRANT — права на базу, схему, таблицы и последовательности.
Сверено 14 октября 2026 года.
Что почитать дальше
- Ошибки PostgreSQLвсе разборы ошибок базы.
- Как установить PostgreSQL на Ubuntuустановка, пользователь и база для сайта.
- Резервные копии сайтакопия файлов и базы по расписанию.