FirebirdSQL logo

Предложение FROM

В предложении FROM указывается список пользователей, ролей и объектов базы данных (процедур, функций, пакетов, триггеров и представлений) у которых будут отняты перечисленные привилегии.Необязательные предложения USER и ROLE позволяют уточнить, у кого именно выдаётся привилегия.Если ключевое слово USER или ROLE не указано, то сервер проверяет, существует ли роль с данным именем, если таковой не существует, то привилегии отбираются у пользователя.

Tip
Рекомендация

Несмотря на то, что ключевые слова USER и ROLE не обязательные, желательно использовать их, чтобы избежать путаницы.

Существование пользователя, у которого отбираются права, не проверяются при выполнении оператора REVOKE.Если привилегия отбирается у объекта базы данных, то необходимо обязательно указывать тип объекта.

Important

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

Примеры отзыва привилегий

Example 1. Отзыв привилегий на таблицу
-- отзыв привилегий SELECT, INSERT у таблицы
REVOKE SELECT, INSERT ON TABLE SALES FROM USER ALEX

-- отзыв привилегии SELECT у ролей MANAGER и ENGINEER и пользователя IVAN
REVOKE SELECT ON TABLE CUSTOMER
FROM ROLE MANAGER, ROLE ENGINEER, USER IVAN;

-- отзыв привилегий SELECT и REFERENCES у пользователя PUBLIC
REVOKE SELECT, REFERENCES (NAME) ON TABLE COUNTRY
FROM PUBLIC;

-- отзыв привилегии UPDATE для столбцов FIRST_NAME, LAST_NAME
REVOKE UPDATE (FIRST_NAME, LAST_NAME) ON TABLE EMPLOYEE
FROM USER IVAN;

-- отзыв привилегии INSERT у хранимой процедуры ADD_EMP_PROJ
REVOKE INSERT ON EMPLOYEE_PROJECT
FROM PROCEDURE ADD_EMP_PROJ;
Example 2. Отзыв привилегии EXECUTE
-- отзыв привилегии EXECUTE на процедуру
REVOKE EXECUTE ON PROCEDURE ADD_EMP_PROJ
FROM USER IVAN;

-- отзыв привилегии EXECUTE на пакет
REVOKE EXECUTE ON PACKAGE DATE_UTILS
FROM USER ALEX;
Example 3. Отзыв привилегии USAGE
-- Отзыв привилегии USAGE на последовательность выданной роли
REVOKE USAGE ON SEQUENCE GEN_AGE FROM ROLE MANAGER;

-- Отзыв привилегии USAGE на последовательность выданной триггеру
REVOKE USAGE ON SEQUENCE GEN_AGE FROM TRIGGER TR_AGE_BI;

-- Отзыв привилегии USAGE на исключение выданной пакету
REVOKE USAGE ON EXCEPTION E_ACCESS_DENIED
FROM PACKAGE PKG_BILL;
Example 4. Отзыв привилегий на изменение метаданных
-- Отзыв у пользователя Joe привилегии на создание таблиц
REVOKE CREATE TABLE FROM Joe;

-- Отзыв у пользователя Joe привилегии на изменение любой процедуры
REVOKE ALTER ANY PROCEDURE FROM Joe;

-- Отзыв привилегии пользователю на создание базы данных
-- у пользователя Superuser
REVOKE CREATE DATABASE FROM USER Superuser;
Example 5. Отзыв привилегий у системной привилегии
-- Отзыв у системной привилегии USER_MANAGEMENT всех прав
-- на представление PLG$SRP_VIEW
REVOKE ALL ON PLG$SRP_VIEW FROM SYSTEM PRIVILEGE USER_MANAGEMENT;

Предложение GRANT OPTION FOR

Необязательное предложение GRANT OPTION FOR отменяет для соответствующего пользователя или роли право предоставления другим пользователям или ролям привилегии к таблицам, представлениям, триггерам, хранимым процедурам.

Отзыв привилегий с использованием GRANT OPTION FOR

Example 1. Отзыв привилегий с использованием GRANT OPTION FOR
-- отмена возможности передавать любую из привилегии на таблицу
-- другим пользователям или ролям у роли ADMINISTRATOR
REVOKE GRANT OPTION FOR ALL ON TABLE CUSTOMER
FROM ROLE ADMINISTRATOR;

-- отзыв привилегии EXECUTE на функцию
-- и лишение права передавать эту привилегию
-- другим пользователям и ролям
REVOKE GRANT OPTION FOR
EXECUTE ON FUNCTION GET_BEGIN_DATE
FROM ROLE MANAGER;