Конспект лекций по дисциплине «Сетевые базы данных», страница 15

            4.3. Системные привилегии

Системные привилегии предоставляют пользователю полномочия по работе с объектами БД на уровне системы. В Oracle большой набор системных привилегий, описанных в документации системы и в литературе по Oracle. Для примера приведем несколько привилегий системного уровня.

CREATE SESSION – разрешение на установление сеанса связи с базой данных

CREATE TABLE     –  разрешение на создание таблиц

CREATE INDEX      –  разрешение на создание индексов

CREATE PROCEDURE –  разрешение на создание подпрограмм

Предоставление системных привилегий выполняется командой GRANT, которая имеет следующий синтаксис.

GRANT {привилегия | имя_роли} [, { привилегия | имя_роли }] ...

TO { пользователь | имя_роли | PUBLIC}

   [, { пользователь | имя_роли | PUBLIC}] ...

[WITH ADMIN OPTION]

В  следующих двух примерах показана выдача привилегий на создание объектов БД: в первом примере пользователю Tom даются разрешения на создание таблиц и процедур, во втором – разрешение на создание таблиц пользователю PUBLIC, что означает – всем пользователям БД.

GRANT create table, create procedure TO  tom;

GRANT create table  TO  public;

Отмена системных привилегий выполняется командой REVOKE, которая имеет следующий синтаксис.

REVOKE { привилегия | имя_роли } [, { привилегия | имя_роли }] ...

FROM { пользователь | имя_роли | PUBLIC}

         [, { пользователь | имя_роли | PUBLIC}] ...

Приведем пример изъятия системной привилегии на создание процедур у пользователя Tom.

REVOKE create procedure FROM tom;

Следует отметить, что привилегии, выданные пользователю PUBLIC, не могут быть изъяты у какого-либо отдельно пользователя. Их можно изъять толь так же, как они даны, – у пользователя PUBLIC (у всех).

            4.4. Объектные привилегии

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

SELECT           – разрешение на чтение данных из таблицы

INSERT            – разрешение на добавление данных в таблицу

UPDATE          – разрешение на изменение данных в таблице

DELETE           – разрешение на удаление данных из таблицы

EXECUTE        – разрешение на выполнение программы

Команда GRANT для предоставления объектной привилегии имеет синтаксис, показанный ниже.

GRANT { привилегия | ALL [PRIVILEGES]} [ (колонка [,колонка] ...) ]

           [, { привилегия | ALL [PRIVILEGES]} [ (колонка [,колонка] ...) ] ]

            ON [схема.]объект

TO { пользователь | имя_роли | PUBLIC}

   [, { пользователь | имя_роли | PUBLIC}] ...

[WITH  ADMIN   OPTION]

Синтаксис команды позволяет давать привилегии на использование, например, не только всей таблицы, но можно дать разрешения только на указанные столбцы. В примере выдаются объектные привилегии на чтение и вставку данных в таблицу Tab1 пользователю Tom.

GRANT select, insert ON tab1  TO  tom;

Команда REVOKE для отмены объектных привилегий имеет следующий синтаксис.

REVOKE { привилегия | ALL [PRIVILEGES]}

              [, {привилегия | ALL [PRIVILEGES]} ] ...

    ON [схема.] объект

    FROM { пользователь | имя_роли | PUBLIC}

             [, { пользователь | имя_роли | PUBLIC}] ...