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

Отмена предоставленных пользователям привилегий (оператор revoke)

В языке SQL для отмены предоставленных пользователям посредством оператора GRANT привилегий используется оператор REVOKE. С помощью этого оператора могут быть отменены все или некоторые из привилегий, предоставленных указанному пользователю раньше. Оператор REVOKE имеет следующий формат:

REVOKE {GRANT OPTION FOR] {PrivilegeList | ALL PRIVILEGES}

ON ObjectName

FROM {AuthorizationIdList | PUBLIC} [RESTRICT | CASCADE]

Ключевое слово ALL PRIVILEGES означает, что для указанного пользователя отменяются все привилегии, предоставленные ему ранее тем пользователем, который ввел данный оператор. Необязательная конструкция GRANT OPTION FOR позволяет для всех привилегий, переданных в исходном операторе GRANT конструкции WITH GRANT OPTION, отменять возможность их передачи независимо от самих этих привилегий.

Назначение ключевых слов RESTRICT и CASCADE аналогично тому, которое они имеют в операторе DROP TABLE. Поскольку для создания некоторых объектов необходимо наличие привилегий, в результате удаления привилегии пользователь может лишиться права, на основании которого им был создан тот или иной объект (подобные объекты, лишенные владельца, принято называть заброшенными). Выполнение оператора REVOKE будет отменено, если в результате могут появиться заброшенные объекты (например, представления), если только в нем не указано ключевое слово CASCADE. Если в операторе присутствует ключевое слово CASCADE, то для любых заброшенных объектов (представлений, доменов, ограничений или проверок), возникающих при выполнении исходного оператора REVOKE, будут автоматически выданы операторы DROP.

Привилегии, которые были предоставлены указанному пользователю другими пользователями, не могут быть затронуты данным оператором REVOKE. Следовательно, если другой пользователь также предоставил данному пользователю отзываемую привилегию, то право доступа к соответствующей таблице у указанного пользователя сохранится. Например, на рисунке показано, что пользователь А предоставил пользователю В привилегию INSERT для таблицы Staff, причем с указанием конструкции WITH GRANT OPTION (шаг 1). Пользователь В передал эту привилегию пользователю С (шаг 2). Затем пользователь С получил эту же привилегию от пользователя Е (шаг 3). Далее пользователь С предоставил упомянутую привилегию пользователю D (шаг 4). Когда пользователь А отменяет привилегию INSERT для пользователя В (шаг 5), эта привилегия не может быть отменена и для пользователя С, поскольку он уже получил ее ранее от пользователя Е. Если бы пользователь Е не предоставил данной привилегии пользователю С, то отзыв привилегии пользователя В имел бы следствием каскадное удаление привилегий для пользователей С и D.

Пример результатов выполнения оператора REVOKE

Перезагрузка привилегий (оператор flush)

Иногда привилегии не могут быть применены сразу. Поэтому для немедленного применения привилегий стоит использовать оператор FLUSH PRIVILEGES. Это позволит избежать неожиданных сюрпризов, когда привилегии были даны, но не применились по тем или иным причинам.

Представления в базах данных

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

С точки зрения пользователя базы данных представление выглядит как реальная таблица данных, содержащая набор поименованных столбцов и строк данных. Но в отличие от реальных таблиц представления не всегда существуют в базе как некоторый набор сохраняемых значений данных. В действительности доступные через представления строки и столбцы данных являются результатом выполнения запроса, заданного при определении представления. СУБД сохраняет определение представления в базе данных. Обнаружив ссылку на представление, СУБД применяет один из двух следующих подходов для формирования представления. При первом проходе СУБД отыскивает определение представления и преобразуют исходный запрос, лежащий в основе представления, в эквивалентный запрос к таблицам, использованным в определении представления, после чего модифицированный запрос выполняется. При втором подходе, который называется материализацией представления, готовое представление хранится в базе данных в виде временной таблицы, а его актуальность постоянно поддерживается по мере обновления всех таблиц, лежащих в его основе.

Соседние файлы в папке Базы данных(1 курс, 2 семестр,2011-2012)