В этом учебном материале вы узнаете, как предоставлять и отменять привилегии (grant and revoke privileges) в Oracle/PLSQL с синтаксисом и примерами.
Описание
Вы можете предоставлять и отменять привилегии для различных объектов базы данных в Oracle. Сначала мы рассмотрим, как предоставлять и отменять привилегии для таблиц, а затем, как предоставлять и отменять привилегии функциям и процедурам в Oracle.
Grant Privileges для таблиц
Вы можете предоставить пользователям различные привилегии к таблицам. Эти привилегии могут быть любой комбинацией SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX, или другие.
Синтаксис
Синтаксис для предоставления привилегий для таблицы в Oracle/PLSQL:
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 предложение:
1 |
GRANT SELECT, INSERT, UPDATE, DELETE ON suppliers TO trizor; |
Вы также можете использовать ключевое слово ALL, чтобы указать, что все полномочия должны быть предоставлены для пользователя с именем trizor.
Например:
1 |
GRANT ALL ON suppliers TO trizor; |
Если вы хотите предоставить для вашей таблицы доступ только SELECT для всех пользователей, то вы предоставите привилегии ключевым словом public.
Например:
1 |
GRANT SELECT ON suppliers TO public; |
Revoke Privileges для таблиц
После того, как вы предоставили привилегии, вам, возможно, придется отменить все или некоторые из этих привилегий. Чтобы сделать это, вы можете запустить команду revoke. Вы можете отменить любую комбинацию из SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER INDEX, или ALL.
Синтаксис
Синтаксис для revoke privileges для таблицы в Oracle/PLSQL:
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:
1 |
REVOKE DELETE ON suppliers FROM anzor; |
Если вы хотите отменить все привилегии над таблицей для user с именем anzor, то вы можете использовать ключевое слово ALL следующим образом:
1 |
REVOKE ALL ON suppliers FROM anzor; |
Если вы предоставляли привилегии для всех пользователей (all users) на таблицу suppliers, и возникла необходимость отменить эти привилегии, то вы можете запустить следующее предложение REVOKE:
1 |
REVOKE ALL ON suppliers FROM public; |
Grant Privileges на функции/процедуры
При работе с функциями и процедурами, вы можете предоставить пользователям возможность выполнять эти функции и процедуры.
Синтаксис
Синтаксис для предоставления привилегии EXECUTE на функции/процедуры в Oracle/PLSQL:
EXECUTE
Возможность компиляции функции/процедуры. Возможность непосредственно выполнять функцию/процедуру.
object
Имя объекта базы данных, которому вы предоставляете привилегии. В случае предоставления привилегии EXECUTE на функцию или процедуру, то это было бы наименование функции или процедуры.
user
Имя пользователя, которому будет предоставлены привилегии EXECUTE.
Пример
Рассмотрим некоторые примеры того, как предоставить привилегии EXECUTE на функции или процедуры в Oracle/PLSQL.
Например, если у вас есть функция с именем Get_Value и вы хотите предоставить EXECUTE доступ для user trizor, вы бы выполнили следующее предложение GRANT:
1 |
GRANT EXECUTE ON Get_Value TO trizor; |
Если вы хотите предоставить возможность выполнять функцию Get_Value всем пользователям, то выполните следующее предложение GRANT:
1 |
GRANT EXECUTE ON Get_Value TO public; |
Revoke Privileges на функции/процедуры
После того, как вы предоставили привилегии EXECUTE на функции или процедуры, возможно эти привилегии для пользователя вам потребуется отменить. Для этого, вы можете выполнить команду REVOKE.
Синтаксис
Синтаксис для отмены привилегий на функции или процедуры в Oracle/PLSQL:
EXECUTE
Возможность компиляции функции/процедуры. Способность напрямую выполнять функцию/процедуру.
object
Имя объекта базы данных, которому вы отменяете привилегии. В случае отмены привилегии EXECUTE на функцию или процедуру, это было бы наименование или функции или процедуры.
user
Имя пользователя, который которому будут отменены привилегии EXECUTE.
Пример
Рассмотрим некоторые примеры того, как отменять привилегии EXECUTE на функции или процедуры в Oracle/PLSQL.
Если вы хотите отменить привилегии EXECUTE на функцию под названием Get_Value для пользователя с именем maximus, то выполните следующее предложение REVOKE:
1 |
REVOKE execute ON Get_Value FROM maximus; |
Если вы предоставляли привилегии EXECUTE для всех пользователей (all users) на функцию под названием Get_Value, и хотите отменить эти привилегии EXECUTE, то выполните следующее предложение REVOKE:
1 |
REVOKE EXECUTE ON Get_Value FROM public; |