Администратор и два независимых отдела
Пусть БД принадлежит организации, имеющей в своем составе 2 и более отделов, каждый из которых имеет свои таблицы, доступ к которым должен быть закрыт для сотрудников других отделов.
Сотрудники каждого отдела имеют привилегию чтения из таблиц своего отдела.
Для каждого отдела создается роль, которой назначается привилегия Select
только на таблицы, с которыми необходимо работать в данном отделе.
CREATE ROLE Select_Sect1; GRANT SELECT ON Table1_Sect1 TO Select_Sect1; GRANT SELECT ON Table2_Sect1 TO Select_Sect1; GRANT SELECT ON Table3_Sect1 TO Select_Sect1; CREATE ROLE Select_Sect2; GRANT SELECT ON Table1_Sect2 TO Select_Sect2; GRANT SELECT ON Table2_Sect2 TO Select_Sect2; GRANT SELECT ON Table3_Sect2 TO Select_Sect2;
Затем эти роли назначается пользователям.
Если пользователь User_Name
принят в первый отдел, то нужно выполнить запрос
GRANT ROLE Select_Sect1 TO User_Name;
Если во второй, то запрос
GRANT ROLE Select_Sect2 TO User_Name;
В этом примере модификацию таблиц БД, изменение их структуры, создание индексов, создание новых таблиц может производить только администратор БД, являющийся владельцем всех таблиц.