Проблема с созданием пользователя только для чтения в PostgreSQL, что приводит к тому, что пользователь имеет больше разрешений с общедоступной схемой.

Я изучаю PostgreSQL и теперь пытаюсь создать пользователя только для чтения.

CREATE USER user WITH PASSWORD 'password';
GRANT CONNECT ON DATABASE my-database TO user;
GRANT USAGE ON SCHEMA public to user;
GRANT SELECT ON ALL TABLES IN SCHEMA public to user;

Однако у меня возникают проблемы с использованием public schema, у которого есть разрешения на СОЗДАНИЕ баз данных и других.

Я не хочу влиять на других пользователей или изменять общедоступную схему. Как лучше всего предоставить ПОЛНЫЙ ДОСТУП ТОЛЬКО ДЛЯ ЧТЕНИЯ?

Спасибо от новичка!

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

Patrick 22.04.2022 22:37
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
1
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете решить эту проблему, не изменяя схему public. Тебе придется

REVOKE CREATE ON SCHEMA public FROM PUBLIC;

Спасибо, @Laurenz Albe Итак, как лучше всего создать пользователя только для чтения в вашем опыте?

Peter 22.04.2022 23:19

Предоставьте SELECT разрешения на все таблицы и представления и USAGE на все схемы и убедитесь, что PUBLIC не предоставлены разрешения на запись.

Laurenz Albe 24.04.2022 15:08

Еще раз спасибо, @Laurenz Albe Извините за невежество, но это не повлияет на других пользователей или функциональность моего приложения, не так ли?

Peter 25.04.2022 18:38

Может, если приложение попытается создать объекты в public. Если это не так, это не должно быть проблемой. Попробуй это!

Laurenz Albe 25.04.2022 21:56

Другие вопросы по теме