×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

6.1.164. REVOKE

6.1.164. REVOKE

REVOKE — отзыв привилегии доступа

Синтаксис

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
    [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { USAGE | SELECT | UPDATE }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { SEQUENCE sequence_name [, ...]
         | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
    ON DATABASE database_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON DOMAIN domain_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN DATA WRAPPER fdw_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN SERVER server_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON { { FUNCTION | PROCEDURE | ROUTINE } function_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
         | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE lang_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
    ON LARGE OBJECT loid [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { SET | ALTER SYSTEM } [, ...] | ALL [ PRIVILEGES ] }
    ON PARAMETER configuration_parameter [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { CREATE | ALL [ PRIVILEGES ] }
    ON TABLESPACE tablespace_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON TYPE type_name [, ...]
    FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

REVOKE [ { ADMIN | INHERIT | SET } OPTION FOR ]
    role_name [, ...] FROM role_specification [, ...]
    [ GRANTED BY role_specification ]
    [ CASCADE | RESTRICT ]

где role_specification может быть:

    [ GROUP ] role_name
  | PUBLIC
  | CURRENT_ROLE
  | CURRENT_USER
  | SESSION_USER

Описание

REVOKE Команда отзывает ранее предоставленные привилегии у одной или нескольких ролей. Ключевое слово PUBLIC относится к неявно определенной группе всех ролей.

См. описание команды GRANT команда для получения описания типов привилегий.

Обратите внимание, что любая конкретная роль обладает совокупностью привилегий, предоставленных ей непосредственно, привилегий, предоставленных любой роли, участником которой она является в настоящий момент, и привилегий, предоставленных PUBLIC. Так, например, отзыв привилегии SELECT привилегию у PUBLIC не обязательно означает, что все роли лишились SELECT привилегии на объект: те, кому она предоставлена напрямую или через другую роль, по-прежнему будут ею обладать. Аналогично, отзыв SELECT у пользователя может не препятствовать использованию им SELECT если PUBLIC или другая роль, в которой он состоит, все еще обладает SELECT правами.

Если GRANT OPTION FOR указано, отзывается только право передачи привилегии (grant option), но не сама привилегия. В противном случае отзываются и привилегия, и право передачи.

Если пользователь обладает привилегией с правом передачи и предоставил ее другим пользователям, то привилегии, полученные этими пользователями, называются зависимыми. Если привилегия или право передачи, которыми обладает первый пользователь, отзываются и при этом существуют зависимые привилегии, то эти зависимые привилегии также отзываются, если CASCADE указано; в противном случае операция REVOKE завершится ошибкой. Данный рекурсивный отзыв затрагивает только те привилегии, которые были предоставлены через цепочку пользователей, прослеживаемую до пользователя, являющегося объектом этой REVOKE команды. Таким образом, затронутые пользователи могут фактически сохранить привилегию, если она также была предоставлена через других пользователей.

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

При отзыве членства в роли, GRANT OPTION вместо этого называется ADMIN OPTION, но поведение аналогично. Обратите внимание, что в версиях до Digital Q.DataBase 16 зависимые привилегии не отслеживались для предоставления членства в роли и, следовательно, CASCADE не имели эффекта для членства в роли. Теперь это не так. Обратите внимание также на то, что эта форма команды не допускает использование необязательного слова GROUP в role_specification.

Так же как ADMIN OPTION может быть удалено из существующего предоставления роли, также можно отозвать INHERIT OPTION или SET OPTION. Это эквивалентно установке значения соответствующего параметра в FALSE.

Примечания

Пользователь может отозвать только те привилегии, которые были предоставлены непосредственно этим пользователем. Если, например, пользователь А предоставил привилегию с параметром GRANT OPTION пользователю B, а пользователь B, в свою очередь, предоставил её пользователю C, то пользователь А не может отозвать привилегию напрямую у C. Вместо этого пользователь А может отозвать GRANT OPTION у пользователя B и использовать CASCADE параметр, чтобы привилегия была, в свою очередь, отозвана у пользователя C. В качестве другого примера: если и A, и B предоставили одну и ту же привилегию C, A может отозвать своё предоставление, но не предоставление B, поэтому C всё равно будет фактически обладать этой привилегией.

Когда пользователь, не являющийся владельцем объекта, пытается REVOKE привилегий на объект; выполнение команды завершится ошибкой, если у пользователя полностью отсутствуют какие-либо привилегии на данный объект. До тех пор, пока доступна хотя бы одна привилегия, выполнение команды будет продолжено, но при этом будут отозваны только те привилегии, для которых у пользователя имеется право передачи (grant options). REVOKE ALL PRIVILEGES формы выведут предупреждающее сообщение, если права передачи отсутствуют, в то время как другие формы выведут предупреждение, если права передачи не предоставлены для любой из привилегий, явно указанных в команде. (В принципе, эти положения применимы и к владельцу объекта, но поскольку считается, что владелец всегда обладает всеми правами передачи, такие случаи невозможны.)

Если суперпользователь решит выполнить команду GRANT или REVOKE команда выполняется так, как если бы она была вызвана владельцем затрагиваемого объекта. (Поскольку роли не имеют владельцев, в случае GRANT членства в роли, команда выполняется так, как если бы она была инициирована изначальным суперпользователем (bootstrap superuser).) Поскольку все привилегии в конечном итоге исходят от владельца объекта (возможно, косвенно через цепочки параметров grant option), суперпользователь может отозвать все привилегии, но для этого может потребоваться использование CASCADE как указано выше.

REVOKE также может быть выполнено ролью, не являющейся владельцем соответствующего объекта, но являющейся членом роли, владеющей объектом, либо членом роли, обладающей привилегиями WITH GRANT OPTION для данного объекта. В данном случае команда выполняется так, как если бы она была инициирована вышестоящей ролью, которая фактически владеет объектом или обладает привилегиями WITH GRANT OPTION. Например, если таблица t1 принадлежит роли g1, членом которой роль u1 является, то u1 может отозвать привилегии для t1 которые зафиксированы как предоставленные g1. Сюда относятся права, предоставленные u1 а также другими участниками роли g1.

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

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

Примеры

Отзыв привилегии на вставку для PUBLIC в таблице films:

REVOKE INSERT ON films FROM PUBLIC;

Отзыв всех привилегий у пользователя manuel для представления kinds:

REVOKE ALL PRIVILEGES ON kinds FROM manuel;

Обратите внимание, что фактически это означает «отозвать все привилегии, которые были предоставлены мной».

Отмена членства в роли admins у пользователя joe:

REVOKE admins FROM joe;

Совместимость

Примечания по совместимости для GRANT команды применяются аналогично к REVOKE. Ключевое слово RESTRICT или CASCADE требуется в соответствии со стандартом, однако Digital Q.DataBase подразумевает RESTRICT по умолчанию.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению