Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
50
Добавлен:
10.02.2015
Размер:
171.78 Кб
Скачать

Предоставление привилегий другим пользователям (оператор grant)

Оператор GRANT используется для предоставления указанным пользователям привилегий в отношении поименованных объектов базы данных. Этот оператор обычно применяется владельцем таблицы с целью предоставления доступа к ней другим пользователям. Оператор GRANT имеет следующий формат:

GRANT {PrivilegeList | ALL PRIVILEGES}

ON ObjectName

TO {AuthorizationldList | PUBLIC}

[WITH GRANT OPTION]

Параметр PrivilegeList представляет собой список, состоящий из одной или более привилегий, разделенных запятыми:

  • SELECT

  • DELETE

  • INSERT [(columnName [, ... ] ) ]

  • UPDATE [(columnName [, ... ] ) ]

  • REFERENCES [(columnName [, ... ])]

  • USAGE

Кроме того, для упрощения в операторе GRANT можно указать ключевое слово ALL PRIVILEGES, что позволит предоставить указанному пользователю все шесть существующих привилегий без необходимости их перечисления. В этом операторе можно также указать ключевое слово PUBLIC, означающее предоставление доступа указанного типа не только всем существующим пользователям, но и всем тем пользователям, которые будут определены в базе данных впоследствии. Параметр ObjectName может представлять собой имя таблицы базы данных, представления, домена, набора символов, проверки или трансляции.

Конструкция WITH GRANT OPTION позволяет всем указанным в списке параметра AuthorizationIdList пользователям передавать другим пользователям все предоставленные им в отношении указанного объекта привилегии. Если эти пользователи также передадут собственные полномочия другим пользователям с указанием конструкции WITH GRANT OPTION, то последние, в свою очередь, также получат право передавать свои полномочия другим пользователям. Если эта конструкция не будет указана, получатель привилегии не сможет передать свои права другим пользователям. Таким образом, владелец объекта может четко контролировать, кто получил право доступа к объекту и какие полномочия ему предоставлены.

Примеры

Пример:Предоставление всех привилегий

Предоставим пользователю с идентификатором Manager все привилегии доступа к таблице staff.

GRANT ALL PRIVILEGES

ON `Staff`

TO 'Manager'@'%' WITH GRANT OPTION;

В результате пользователь с идентификатором Manager, который может подключаться с любого хоста, получил право выбирать данные из таблицы Staff, а также вставлять, обновлять или удалять строки из нее. Кроме того, пользователь Manager теперь может ссылаться на таблицу Staff и все ее столбцы в любой таблице, создаваемой им впоследствии. В приведенном выше операторе присутствует конструкция WITH GRANT OPTION, поэтому пользователь Manager сможет передавать полученные им привилегии любым другим пользователям по своему усмотрению.

Пример:Предоставление только некоторых привилегий

Предоставим пользователям Personnel и Director привилегии SELECT и UPDATE на столбец salary-таблицы staff.

GRANT SELECT, UPDATE (`salary`)

ON `Staff`

TO 'Personnel'@'localhost', 'Director'@'%';

Поскольку в приведенном выше операторе конструкция WITH GRANT OPTION опущена, пользователи Personnel и Director не смогут передать полученные ими привилегии другим пользователям.

Пример:Предоставление определенных привилегий всем пользователям типа PUBLIC

Предоставим всем пользователям базы данных привилегию SELECT для таблицы Branch.

GRANT SELECT

ON Branch

TO PUBLIC;

Использование в приведенном выше операторе ключевого слова PUBLIC означает, что все пользователи (как уже существующие, так и те, которые будут созданы в базе данных впоследствии) получают право выбирать все данные, имеющиеся в таблице Branch. Обратите внимание на то, что в данном случае нет смысла использовать конструкцию WITH GRANT OPTION, поскольку указанные права получают все пользователи базы данных и предоставлять их больше просто некому.

Соседние файлы в папке Bazy_dannykh_1_kurs_2_semestr_2011-2012