Как создать нового пользователя в ORACLE с полным доступом (изменение, удаление, выбор, вставка, отладка и т. д.) к только одной конкретной СХЕМЕ.
Создайте нового пользователя ORACLE с полным доступом к определенной SCHEMA
Ответы (2)
Не может быть сделано. В Oracle привилегии предоставляются для определенных объектов, если только у вас нет мощных привилегий ANY, которые предоставляют доступ к любому объекту в любой схеме.
Это одна из тех вещей, которые кажутся довольно раздражающими, но на самом деле вполне разумны. Нет хорошей деловой причины для предоставления привилегий всем объектам в схеме в массовом порядке. Либо
- вторая схема действительно требует просто подмножества привилегий для подмножества объектов; или
- вторая схема совершенно не нужна.
Теперь может случиться так, что подмножество в первом случае является очень большим подмножеством. Но лень не является оправданием плохой практики безопасности.
Что мы можем сделать, так это сгенерировать операторы предоставления из словаря данных:
select 'grant select on '||table_name||' to B'
from user_tables
/
(для сценария, запускаемого пользователем A).
Это все же лучше, чем предоставление привилегий на схему, потому что это означает, что по крайней мере любой новый объект, добавленный пользователем А, не будет автоматически распространяться на Б без дополнительных действий и, следовательно, без дополнительных размышлений о том, подходит ли это.
Вы можете использовать ПРОКСИ пользователя . Это не совсем то же самое, поскольку позволяет одному пользователю базы данных подключаться как другому, но с использованием собственного пароля. Таким образом, у вас может быть несколько пользователей, каждый со своим паролем, использующих одну и ту же схему.
Пример кода находится здесь.