DeepEdit!

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

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

GRANT, REVOKE и привилегии

Такие операторы DDL, как GRANT (предоставить) и REVOKE (отменить), нельзя использовать непосредственно в PL/SQL, — они служат для опреде­ления возможности выполнения других SQL-операторов. Чтобы выпол­нить над таблицей Oracle некоторую операцию, например INSERT или DELETE, необходимо иметь соответствующие полномочия, которые пре­доставляются и отменяются с помощью SQL-команд GRANT и REVOKE.

Объектные и системные привилегии
Существуют привилегии двух различных видов: объектные и системные. Объектная привилегия (object privilege) разрешает выполнение определен­ной операции над конкретным объектом (например, над таблицей). Сис­темная привилегия (system privilege) разрешает выполнение операций над целым классом объектов.
В таблице 4.2 представлены существующие объектные привилегии. Объектные привилегии DDL — ALTER (изменить), INDEX (индексиро­вать), REFERENCES (ссылки) — нельзя применять непосредственно в PL/SQL (за исключением динамического SQL), так как они разрешают
выполнение операций DDL над определенным объектом.
Существует множество системных привилегий, соответствующих практически всем возможным операциям DDL. Например, системная
привилегия CREATE TABLE позволяет ее обладателю создавать таблицы.
Системная привилегия CREATE ANY TABLE дает возможность создавать таблицы в других схемах. Системные привилегии представлены в руко­водстве "Server SQL Reference".

GRANT и REVOKE
Оператор GRANT предоставляет другой схеме доступ к привилегии, а оператор REVOKE запрещает доступ, разрешенный оператором GRANT. Оба оператора могут использоваться как для объектных, так и для сис­темных привилегий.
GRANT
Для объектных привилегий синтаксис оператора GRANT таков:
GRANT привилегия ON объект ТО обладателъ_привилегии [WITH GRANT OPTION];
где привилегия — это нужная привилегия, объект — это объект, к которому разрешается доступ, а обладатель_привилегиг — пользователь, получающий привилегию. Для примера предположим, что userA — это схема базы дан­ных. Тогда оператор GRANT может выглядеть следующим образом:
GRANT SELECT ON classes TO userA;
Если указывается параметр WITH GRANT OPTION (с возможностью предоставления привилегий), то пользователь userA будет иметь возмож­ность и сам предоставлять привилегии другим пользователям. В операто­ре GRANT можно указывать несколько привилегий, например:
GRANT UPDATE, DELETE ON students TO userA;
Для системных привилегий синтаксис оператора GRANT таков:
GRANT привилегияТОобладатель_приаилегиг [WITH ADMIN OPTION];
где привилегия — это предоставляемая системная привилегия, а
— пользователь, получающий привилегию. Если в оператор
включается параметр WITH ADMIN OPTION (с возможностью администри-
рования), то        будет иметь возможность предостав-
лять привилегии другим пользователям. Например:
Г] GRANT CREATE TABLE, ALTER ANY PROCEDURE TO userA;
Как и в случае с объектными привилегиями, в одном и том же операторе GRANT можно указывать несколько привилегий.
GRANT является оператором DDL, поэтому результаты его выполнения сказываются немедленно, и после того как он выполнен, осуществляется неявное завершение (COMMIT) транзакции.
REVOKE
Для объектных привилегий синтаксис оператора REVOKE таков:
REVOKE привилегия ON объект FROM обладатель_привилеши [CASCADECONSTRAINTS] [FORCE];
где привилегия — это отменяемая привилегия, объект — это объект, на кото-
рый была предоставлена привилегия, а        — пользова-
тель, имевший эту привилегию. Например:

 


Как выбрать окна - стоимость окна пвх. Окна Kaleva- Убийцы шума. . Купить, снять квартиру выгодно: бляди питера. . Тест винчестера.







jAntivirus