Привилегии

В этом учебном материале вы узнаете, как предоставлять и отменять привилегии (grant and revoke privileges) в Oracle/PLSQL с синтаксисом и примерами.

Описание

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

Grant Privileges для таблиц

Вы можете предоставить пользователям различные привилегии к таблицам. Эти привилегии могут быть любой комбинацией SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX, или другие.

Синтаксис

Синтаксис для предоставления привилегий для таблицы в Oracle/PLSQL:

GRANT privileges ON object TO user;

privileges
Привилегии для назначения. Это может быть любое из следующих значений:

Привилегии Описание
SELECT Возможность выполнения SELECT на таблице
INSERT Возможность выполнения INSERT на таблице
UPDATE Возможность выполнения UPDATE на таблице
DELETE Возможность выполнения DELETE на таблице
REFERENCES Возможность создавать CONSTRAINT, который ссылается на таблицу.
ALTER Возможность выполнять оператор ALTER TABLE, чтобы изменить описание таблицы.
INDEX Возможность создавать INDEX таблице с помощью оператора CREATE INDEX.
ALL Все привилегии для таблицы

object
наименование объекта базы данных, которому вы предоставляете привилегии. В случае предоставления привилегий таблице, это должно быть название таблицы.
user
Имя пользователя, которому будет предоставлена эта привилегия.

Пример

Рассмотрим некоторые примеры, предоставления привилегий для таблиц в Oracle.
Например, если вы хотите предоставить SELECT, INSERT, UPDATE и DELETE привилегии на таблицу с наименованием suppliers для user с именем trizor, то нужно выполнить следующие GRANT предложение:

Вы также можете использовать ключевое слово ALL, чтобы указать, что все полномочия должны быть предоставлены для пользователя с именем trizor.

Например:

Если вы хотите предоставить для вашей таблицы доступ только SELECT для всех пользователей, то вы предоставите привилегии ключевым словом public.

Например:

Revoke Privileges для таблиц

После того, как вы предоставили привилегии, вам, возможно, придется отменить все или некоторые из этих привилегий. Чтобы сделать это, вы можете запустить команду revoke. Вы можете отменить любую комбинацию из SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER INDEX, или ALL.

Синтаксис

Синтаксис для revoke privileges для таблицы в Oracle/PLSQL:

REVOKE privileges ON object FROM user;

privileges
Привилегии для отмены. Это может быть любое из следующих значений:

Привилегии Описание
SELECT Возможность выполнения SELECT на таблице
INSERT Возможность выполнения INSERT на таблице
UPDATE Возможность выполнения UPDATE на таблице
DELETE Возможность выполнения DELETE на таблице
REFERENCES Возможность создавать CONSTRAINT, который ссылается на таблицу.
ALTER Возможность выполнять оператор ALTER TABLE, чтобы изменить описание таблицы.
INDEX Возможность создавать INDEX таблице с помощью оператора CREATE INDEX.
ALL Все привилегии для таблицы

object
Имя объекта базы данных, для которого отменяются привилегии. В случае отмены привилегий для таблицы, это было бы имя таблицы.
user
Имя пользователя, для которого будут эти привилегии отменены.

Пример

Рассмотрим некоторые примеры того, как отменять привилегии для таблиц в Oracle/PLSQL.
Например, если вы хотите отменить DELETE привилегии на таблицу с названием suppliers для user с именем anzor, то выполните следующее предложение REVOKE:

Если вы хотите отменить все привилегии над таблицей для user с именем anzor, то вы можете использовать ключевое слово ALL следующим образом:

Если вы предоставляли привилегии для всех пользователей (all users) на таблицу suppliers, и возникла необходимость отменить эти привилегии, то вы можете запустить следующее предложение REVOKE:

Grant Privileges на функции/процедуры

При работе с функциями и процедурами, вы можете предоставить пользователям возможность выполнять эти функции и процедуры.

Синтаксис

Синтаксис для предоставления привилегии EXECUTE на функции/процедуры в Oracle/PLSQL:

GRANT EXECUTE ON object TO user;

EXECUTE
Возможность компиляции функции/процедуры. Возможность непосредственно выполнять функцию/процедуру.
object
Имя объекта базы данных, которому вы предоставляете привилегии. В случае предоставления привилегии EXECUTE на функцию или процедуру, то это было бы наименование функции или процедуры.
user
Имя пользователя, которому будет предоставлены привилегии EXECUTE.

Пример

Рассмотрим некоторые примеры того, как предоставить привилегии EXECUTE на функции или процедуры в Oracle/PLSQL.
Например, если у вас есть функция с именем Get_Value и вы хотите предоставить EXECUTE доступ для user trizor, вы бы выполнили следующее предложение GRANT:

Если вы хотите предоставить возможность выполнять функцию Get_Value всем пользователям, то выполните следующее предложение GRANT:

Revoke Privileges на функции/процедуры

После того, как вы предоставили привилегии EXECUTE на функции или процедуры, возможно эти привилегии для пользователя вам потребуется отменить. Для этого, вы можете выполнить команду REVOKE.

Синтаксис

Синтаксис для отмены привилегий на функции или процедуры в Oracle/PLSQL:

REVOKE EXECUTE ON object FROM user;

EXECUTE
Возможность компиляции функции/процедуры. Способность напрямую выполнять функцию/процедуру.
object
Имя объекта базы данных, которому вы отменяете привилегии. В случае отмены привилегии EXECUTE на функцию или процедуру, это было бы наименование или функции или процедуры.
user
Имя пользователя, который которому будут отменены привилегии EXECUTE.

Пример

Рассмотрим некоторые примеры того, как отменять привилегии EXECUTE на функции или процедуры в Oracle/PLSQL.
Если вы хотите отменить привилегии EXECUTE на функцию под названием Get_Value для пользователя с именем maximus, то выполните следующее предложение REVOKE:

Если вы предоставляли привилегии EXECUTE для всех пользователей (all users) на функцию под названием Get_Value, и хотите отменить эти привилегии EXECUTE, то выполните следующее предложение REVOKE: