|
Программирование >> Sql: полное руководство
REVOKE INSERT, UPDATE ON SALESREPS EROM OPUSER I- revoke - -grant option for- - select . - delete- - insert- - update- references- - {- имя столбца-j) - all privileges on имя та6лицы usage on - domain имя домена - character имя на6ара символов- - collation имя порядка сортировки- - translation имя правипа конвертирования -1 from - имя попьзавателя -public - -cascade--restrict- Рис. 15.7. Синтаксическая диаграмма инсгрущии REVOKE Сначала привилегии insert и update на таблицу salesreps даются двум пользователям, а затем у одного из них отбираются. Однако привилегия select остается у обоих пользователей. Вот еще несколько примеров инструкций revoke. Отобрать все привилегии, предоставленные ранее на таблицу offices REVOKE ALL PRIVILEGES ON OFFICES FROM ARUSER Отобрать привилегии update и delete у двух пользователей. REVOKE UPDATE, DELETE ON OFFICES FROM ARUSER, OPUSER Отобрать у всех пользователей все предоставленные ранее привилегии на таблицу offices REVOKE ALL PRIVILEGES ON OFFICES FROM PUBLIC Посредством инструкции revoke вы можете отобрать только те привилегии, которые вы предоставили ранее некоторому пользователю. Y него могут быть также привилегии, предоставленные другими пользователя.ми; ваща инструкция revoke не влияет на эти привилегии Обратите особое внимание на то, что если два разных пользователя предоставляют третьему пользователю одну и ту же привилегию на один и тот же объект, а затем один из них отменяет привилегию, то вторая привилегия остается в силе и по-прежнему разрешает пользователю доступ к объекту Результат такого перекрытия привилегий иллюстрируется на следующем примере Предположим, что вице-президент по сбыту Сэм Кларк предоставляет Ларри фитчу привилегию select на таблицу salesreps и привилегии select и update ла таблицу orders, используя следующие инструкции; gfyiNT SELECT ON SALESREPS TO LARRY GRANT SELECT, UPDATE ON ORDERS TO LARRY Через несколько дней вице-президент по маркетингу Джордж Уоткинс предоставляет Ларри привилегии select и delete на таблицу orders и привилегию select на таблицу customers, используя такие инсгрукции; GRANT SELECT, DELETE ON ORDERS TO LARRY GRANT SELECT ON CUSTOMERS TO LARRY Заметьте, что Ларри получил привилегии на таблицу orders из двух различных источников. Причем привилегию select на таблицу orders он получил из обоих источников. Несколькими днями позже Сэм отменяет привилегии, предоставленные недавно Ларри на таблицу orders; REVOKE SELECT, UPDATE ON ORDERS FROM LARRY После этого у Ларри остается привилегия select на таблицу salesreps, привилегии select и delete на таблицу orders и привилегия select на габлицу customers; но он теряет привилегию update на таблицу orders Инструкция REVOKE и право предоставления привилегий Когда вы даете кому-нибудь привилегии с правом последующего предоставления, а затем отменяете эти привилегии, то в большинстве СУБД автоматически отменяются все привилегии, которые являются производными от исходных Рассмотрим еще раз цепочку привилегий, представленных на рис. 15 6, идущую от вице-президента по сбыту Сэма Кларка к менеджеру лос-анджелесского офиса Ларри Фитчу, а затем к Сью Смит. Если теперь Сэм отменит привилегии Ларри на представление Westreps, то привилегии Сью также будут автоматически отменены Ситуация становится более сложной, если привилегии предоставляются двумя или более пользователями, один из которых впоследствии отменяет привилегии Рассмотрим рис. 15.8. Он представляет собой предыдущий пример в слегка измененном виде. Здесь Ларри получает привилегию select с правом предоставления как от Сэма (вице-президента по сбыту), так и от Джорджа (вице-президента по маркетингу), а затем дает привилегии Сью. На этот раз, когда Сэм отменяет привилегии Ларри, остаются привилегии, предоставленные Джорджем, Привилегии Сью также остаются, поскольку они могут происходить от привилегий Джорджа (Т) GRANT WITH GRANT OPTION 0 срдТ WITH GRANT OPTION LARRY Рис 75. S. Отмена привилегий, предоставленных двумя пользователями Рассмотрим другой вариант этой цепочки привитегий (рис. 15.9), в котором изменен порядок событий. Здесь Ларри получает привилегию с правом предоставления от Сэма, дает эту привилегию Сью и после этого получает привилегию с правом предоставления от Джорджа. Когда на этот раз Сэм отменяет привилегии Ларри, результат будет другим и может отличаться на разных СУБД. Как и в случае, изображенном на рис. 15.8, у Ларри останется привилегия select на представление westreps, предоставленная Джорджем. Но в СУБД DB2 и SQL/DS Сью автоматически потеряет привилегию select. Почему? Потому что привилегия Сью явно происходит от привилегии, данной Ларри Сэмом и только что отмененной. Она не может быть производной от привилегии, предоставленной Ларри Джорджем, так как эта привилегия отсутствовала в тот момент, когда Ларри давал привилегию Сью. 0 GRANT WITH GRANT OPTION (3J GRANT WITH GRANT OPTION LOiRRY GEORGE 0 GRANT Рис. 15.9. Отмена привилегий, предоставленных в другой последовательности
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |