Оператор REVOKE
в PostgreSQL используется для отзыва ранее назначенных привилегий у пользователей и ролей. Это позволяет ограничивать доступ к объектам базы данных, таким как таблицы, представления, последовательности и функции.
Основы оператора REVOKE
Базовый синтаксис:
REVOKE privilege_name ON object_name FROM role_name;
Пример отзыва права SELECT
для таблицы users
у пользователя read_only_user
:
REVOKE SELECT ON users FROM read_only_user;
Отзыв нескольких привилегий
Можно отозвать сразу несколько привилегий одним запросом:
REVOKE SELECT, INSERT, UPDATE ON users FROM editor_user;
Отзыв всех привилегий
Чтобы удалить все ранее назначенные привилегии, используется ALL PRIVILEGES
:
REVOKE ALL PRIVILEGES ON users FROM admin_user;
Отзыв привилегий на базу данных
Привилегии можно отзывать не только для таблиц, но и для баз данных:
REVOKE CONNECT, CREATE ON DATABASE my_database FROM dev_user;
Отзыв привилегий на схему
Для ограничения прав пользователя в схеме можно отозвать привилегии USAGE
и CREATE
:
REVOKE USAGE, CREATE ON SCHEMA public FROM dev_user;
Отзыв прав, переданных через WITH GRANT OPTION
Если пользователь получил привилегии с возможностью передачи их другим (WITH GRANT OPTION
), можно отозвать только право передачи или все привилегии:
REVOKE GRANT OPTION FOR SELECT ON users FROM manager_user;
Полный отзыв привилегий:
REVOKE SELECT ON users FROM manager_user CASCADE;
Ключевое слово CASCADE
автоматически отзывает привилегии у всех, кто получил их от указанного пользователя.