Я бы хотел разделить доступ к двум существующим схемам данных (с уже созданными таблицами) в режиме красного смещения, создав двух новых пользователей и предоставив им доступ к их соответствующим схемам.
Таким образом, user_1
должен иметь доступ только к schema_1
, а user_2
должен иметь доступ только к schema_2
.
Под доступом я имею в виду, что пользователи должны иметь возможность SELECT, INSERT, UPDATE, DELETE, DROP
из всех текущих таблиц (независимо от того, кто их создал) и CREATE
новых таблиц в своих схемах.
Я нашел следующие операторы для создания нового пользователя и предоставления ему определенных типов доступа:
Создание нового пользователя:
CREATE USER user_1 WITH PASSWORD 'password_1';
Предоставление использования данной схеме:
GRANT USAGE ON SCHEMA "schema_1" TO user_1;
Назначение привилегий:
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA "schema_1" TO user_1;
Изменение привилегий по умолчанию для сохранения разрешений для новых таблиц
ALTER DEFAULT PRIVILEGES IN SCHEMA "schema_1" GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO user_1;
В документации в нем показано, как добавить все необходимые привилегии, кроме таблиц DROP
.При тестировании это выдает ошибку ERROR: must be owner of relation table_to_drop
.
. В качестве альтернативы я попытался предоставить все привилегии, как показано ниже ...
GRANT ALL TABLES IN SCHEMA "schema_1" TO user_1;
... но это не перезаписывает требованиеон должен быть владельцем стола, который может уронить его.
Итак, вопрос в том, можно ли ограничить пользователя данной схемой с доступом к ней, как указано выше?