SQL GRANT

С помощью команд управления данными можно управлять доступом пользователей к базе данных.

GRANT SQL

Команда GRANT используется для назначения привилегий пользователям.

Предоставляет разрешения на таблицу, представление, функцию с табличным значением, хранимую процедуру, расширенную хранимую процедуру, скалярную функцию, агрегатную функцию, очередь обслуживания или синоним.

Синтаксис команды GRANT

Синтаксис команды GRANT

  • system_priv — системная привилегия
  • role — роль: набор соответствующих полномочий, которые администратор может коллективно предоставлять пользователям и другим ролям.
  • user — пользователь
  • PUBLIC —  привилегия передается всем пользователям
  • WITH ADMIN OPTION если предоставлены системные полномочия или роли, то параметр позволяет пользователю передать полномочие или роль другим пользователям или ролям

SQL GRANT. Пример 1

Предположим, пользователь Р1 является владельцем таблицы Student и нужно передать пользователю Р2 право на формулирование запросов к этой таблице:

GRANT SELECT ON Student TO P2;

SQL GRANT. Пример 2

Для передачи прав на другие привилегии синтаксис тот же самый. Пользователь Р1, являющийся владельцем таблицы Student, может разрешить пользователю Р2 вводить строки в нее:

GRANT INSERT ON Student TO P2;

SQL GRANT. Пример 3

Передача привилегий не ограничивается передачей единственной привилегии единственному пользователю с помощью одной команды GRANT. Допустимы списки привилегий и/или пользователей с элементами, разделенными запятыми:

GRANT SELECT, INSERT ON Student TO P2; GRANT SELECT, INSERT ON Student TO P2, Р3;

SQL GRANT. Пример 4

Можно разрешить пользователю изменять значения любого или всех столбцов таблицы:

GRANT UPDATE ON Student TO P2; GRANT UPDATE (Fam,Ball) ON Student TO P2;

SQL GRANT. Пример 5

Если необходимо предоставить кому-то все полномочия на конкретный объект, используется ключевое слово ALL:

GRANT ALL ON Student ТО Р2;

SQL GRANT. Пример 6

Когда передаются привилегии с атрибутом PUBLIC, который относится  к пользователям, а не к привилегиям, то все пользователи получают их автоматически. Чаще всего это применяется для привилегии SELECT для определенных таблиц или представлений, которые нужно предоставить каждому пользователю для рассмотрения. Разрешить каждому пользователю просматривать таблицу Student можно следующей командой:

GRANT SELECT ON Student TO PUBLIC;

SQL GRANT. Пример 7

Иногда создатель таблицы хочет, чтобы другие пользователи имели право передавать привилегии на эту таблицу. Это можно сделать с помощью предложения WITH GRANT OPTION. Если пользователь Р1 желает, чтобы пользователь Р2 имел право передавать полномочия на работу с таблицей Student другим пользователям, то он должен передать пользователю Р2 привилегию на выполнение соответствующих команд:

GRANT SELECT, INSERT ON Student ТО Р2 WITH GRANT OPTION;
Оставить комментарий к «SQL GRANT»