SQL- операторы для назначения и отмены полномочий пользователей
В стандарте SQL определены 2 оператора GRANT и REVOKE соответственно предоставления и отмены привилегий.
Оператор предоставления привилегий имеет следующий формат:
GRANT {<список действий>|ALL PRIVILEGES}
ON <имя объекта> TO {<имя пользователя>|PUBLIC}
[WITH GRANT OPTION]
Список действий определяет набор действий из допустимого перечня для данного объекта. Параметр ALL PRIVILEGES указывает, что разрешены все действия из допустимых для объектов данного типа.
Параметр <имя объекта > задает имя конкретного объекта: таблицы, представления, хранимой процедуры, триггера.
Параметр WITH GRANT OPTION является необязательным и определяет режим, при котором передаются не только права на указанные действия, но и право передавать эти права другим пользователям.
Для объекта типа таблица полным допустимым перечнем действий является набор из четырех операций: SELECT, DELETE, INSERT, UPDATE. При этом операция обновления может быть ограничена несколькими столбцами.
Например, если некоторый пользователь владеет таблицей STUDENTS и хочет разрешить пользователю USER1 выполнить запрос к ней, он должен выполнить следующую команду:
Теперь пользователь USER1 может выполнять запросы к таблице STUDENTS, но не может изменять данные в таблице.
Если нескольким пользователям необходимо предоставить несколько привилегий, списки привилегий и пользователей разделяются запятыми:
Все привилегии имеют одинаковый синтаксис, кроме команд UPDATE и REFERENCES, в которых можно дополнительно указывать имена полей. Например, если пользователю разрешается изменять только поле STIP, то команда будет иметь следующий вид:
GRANT UPDATE(STIP) ON STUDENTS TO USER1
При использовании привилегии REFERENCES следуют тому же правилу, что и для UPDATE. Когда пользователю предоставляется привилегия REFERENCES, он может создавать внешние ключи, ссылающиеся на столбцы таблицы как на родительские ключи. Например, можно предоставить пользователю USER1 право использовать таблицу STUDDENTS как таблицу родительского ключа с помощью следующей команды:
Эта команда дает пользователю право использовать поле NOM_ZACH в качестве родительского ключа по отношению к любым внешним ключам в его таблицах.
Для предоставления всех прав при использовании таблицы STUDENTS:
Для предоставления всем пользователям права просматривать таблицу STUDENTS:
Любой пользователь, добавляемый к системе, получает все привилегии, назначенные как PUBLIC.
Для того чтобы пользователь USER1 мог передавать свою привилегию SELECTдругим пользователям:
Для удаления привилегий используется команда REVOKE. Например, для удаления привилегий пользователя USER1 используется команда: