Ошибки

PostgreSQL: permission denied for schema public

Пользователю базы не хватает права создавать таблицы в схеме public. С PostgreSQL 15 это право есть только у владельца базы, а в Ubuntu 24.04 ставится PostgreSQL 16. Сделайте пользователя сайта владельцем базы.

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

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

ERROR:  permission denied for schema public

Ошибка появляется, когда пользователь создаёт таблицу: командой CREATE TABLE, при установке сайта или при первом запуске программы. Схема public — раздел базы, куда попадают таблицы, если раздел не указан.

Почему так

До PostgreSQL 15 создавать таблицы в схеме public могли все пользователи. С версии 15 это право отнято: схема public принадлежит владельцу базы, и создавать в ней таблицы может только он. Если базу создали командой CREATE DATABASE shop; от имени postgres, владелец базы — postgres, и пользователь сайта таблицы создать не может.

Не помогает и GRANT ALL ON DATABASE shop TO ivan;: права на базу — это подключение, временные таблицы и создание новых схем, а не таблицы в схеме public.

Как исправить: сделайте пользователя владельцем базы

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

sudo -u postgres psql

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

ALTER DATABASE shop OWNER TO ivan;

Схема public принадлежит владельцу базы, поэтому новый владелец сразу получает право создавать в ней таблицы. Выйдите командой \q и повторите действие, на котором была ошибка.

Если базу ещё не создавали, сразу указывайте владельца: CREATE DATABASE shop OWNER ivan; — пользователь и база для сайта.

Если владельца менять нельзя

Если владельцем базы должен остаться другой пользователь, дайте пользователю сайта право создавать таблицы только в схеме public. Сначала подключитесь к нужной базе командой \c — права в схеме выдаются внутри базы:

\c shop
GRANT CREATE ON SCHEMA public TO ivan;

Если ошибка permission denied for table

ERROR:  permission denied for table orders

Таблицу создал другой пользователь, например postgres, а пользователю сайта прав на неё не дали. Проще всего сделать пользователя сайта владельцем таблицы — из sudo -u postgres psql, после \c shop:

ALTER TABLE orders OWNER TO ivan;

Если таблиц много, можно дать права сразу на все таблицы схемы:

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO ivan;

Команда даёт права на таблицы, которые уже есть. Чтобы права получали и таблицы, которые postgres создаст потом, выполните ещё:

ALTER DEFAULT PRIVILEGES FOR ROLE postgres IN SCHEMA public
    GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO ivan;

Если ошибка permission denied for sequence

ERROR:  permission denied for sequence orders_id_seq

Последовательность — счётчик, который выдаёт номера, например для столбца id. Ошибка появляется при добавлении строк, если на счётчик таблицы нет прав. Дайте их в той же базе:

GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO ivan;

Если ошибка must be owner of table

ERROR:  must be owner of table orders

Изменить или удалить таблицу может только её владелец, и это право нельзя выдать отдельно. Передайте таблицу пользователю сайта — из sudo -u postgres psql, после \c shop:

ALTER TABLE orders OWNER TO ivan;
Не делайте пользователя сайта суперпользователем: суперпользователь обходит все проверки прав, и через сайт можно будет добраться до всех баз на сервере.

Ошибки рядом

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

Источники

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

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