REVOKE в PostgreSQL: отзыв привилегий

Оператор 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 автоматически отзывает привилегии у всех, кто получил их от указанного пользователя.