С помощью команд управления данными можно управлять доступом пользователей к базе данных.
Команда GRANT используется для назначения привилегий пользователям.
Синтаксис команды GRANT:
- system_priv — системная привилегия
- role — роль: набор соответствующих полномочий, которые администратор может коллективно предоставлять пользователям и другим ролям.
- user — пользователь
- PUBLIC — привилегия передается всем пользователям
- WITH ADMIN OPTION — если предоставлены системные полномочия или роли, то параметр позволяет пользователю передать полномочие или роль другим пользователям или ролям
Пример 1
Предположим, пользователь Р1 является владельцем таблицы Student и нужно передать пользователю Р2 право на формулирование запросов к этой таблице:
GRANT SELECT ON Student TO P2;
Пример 2
Для передачи прав на другие привилегии синтаксис тот же самый. Пользователь Р1, являющийся владельцем таблицы Student, может разрешить пользователю Р2 вводить строки в нее:
GRANT INSERT ON Student TO P2;
Пример 3
Передача привилегий не ограничивается передачей единственной привилегии единственному пользователю с помощью одной команды GRANT. Допустимы списки привилегий и/или пользователей с элементами, разделенными запятыми:
GRANT SELECT, INSERT ON Student TO P2;GRANT SELECT, INSERT ON Student TO P2, Р3;
Пример 4
Можно разрешить пользователю изменять значения любого или всех столбцов таблицы:
GRANT UPDATE ON Student TO P2;GRANT UPDATE (Fam,Ball) ON Student TO P2;
Пример 5
Если необходимо предоставить кому-то все полномочия на конкретный объект, используется ключевое слово ALL:
GRANT ALL ON Student ТО Р2;
Пример 6
Когда передаются привилегии с атрибутом PUBLIC, который относится к пользователям, а не к привилегиям, то все пользователи получают их автоматически. Чаще всего это применяется для привилегии SELECT для определенных таблиц или представлений, которые нужно предоставить каждому пользователю для рассмотрения. Разрешить каждому пользователю просматривать таблицу Student можно следующей командой:
GRANT SELECT ON Student TO PUBLIC;
Пример 7.
Иногда создатель таблицы хочет, чтобы другие пользователи имели право передавать привилегии на эту таблицу. Это можно сделать с помощью предложения WITH GRANT OPTION. Если пользователь Р1 желает, чтобы пользователь Р2 имел право передавать полномочия на работу с таблицей Student другим пользователям, то он должен передать пользователю Р2 привилегию на выполнение соответствующих команд:
GRANT SELECT, INSERT ON Student ТО Р2 WITH GRANT OPTION;