PostgreSQL LinuxWindowsmacOS

PostgreSQL: permission denied for table / schema public

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

Роли не хватает прав. Выдайте GRANT на таблицы и схему; в PostgreSQL 15 у роли по умолчанию нет CREATE на схему public.

В этой статье
  1. Что означает ошибка
  2. Причины и признаки
  3. Пошаговое решение
  4. Если проблема осталась

#Что означает ошибка

Сообщение
permission denied for table

Роли не хватает прав. Выдайте GRANT на таблицы и схему; в PostgreSQL 15 у роли по умолчанию нет CREATE на схему public.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Нет GRANTРоль не имеет разрешения на таблицу.Выдайте нужный SELECT/INSERT точечным GRANT.
PostgreSQL 15У объектов в PostgreSQL 15 другие права по умолчанию.Проверьте владельца схемы и фактические ACL.
Другой владелецОбъект принадлежит другой роли.Настройте разрешения у владельца, ALTER OWNER не используйте без нужды.
Нет USAGEРоль не имеет USAGE на схему.Выдайте USAGE только необходимой роли.

#Пошаговое решение

  1. Определите текущую роль и объектВ psql, подключённом к требуемой базе, выполните SELECT current_user, current_database();. Затем \dn+ для схем и \dp public.ИМЯ_ТАБЛИЦЫ для прав таблицы, подставив её настоящее имя. Ошибка permission denied for schema public отличается от отсутствия SELECT/INSERT на таблице.
  2. Проверьте права схемыЧтобы обратиться к объекту внутри схемы, роли обычно нужно USAGE на схему. Администратор-владелец может дать GRANT USAGE ON SCHEMA public TO app_user; с точным именем роли; CREATE на схему нужно только при создании объектов и не следует давать всем пользователям.
  3. Добавьте только необходимое действие над таблицейДля чтения конкретной таблицы владелец может выполнить GRANT SELECT ON TABLE public.orders TO app_user; — замените таблицу и роль реальными. Для записи отдельно выдайте нужные INSERT/UPDATE/DELETE, а последовательности проверяйте отдельно. Не назначайте SUPERUSER или GRANT ALL ON DATABASE как замену точным разрешениям.
  4. Проверьте запрос под учётной записью приложенияПодключитесь как app_user к правильной базе и повторите один безопасный SELECT. Если ошибка возникает лишь на новых таблицах, администратор должен проверить владельца и ALTER DEFAULT PRIVILEGES для роли, создающей эти объекты, а не просто повторять GRANT без анализа.

#Если проблема осталась

Если «PostgreSQL: permission denied for table / schema public» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.