PostgreSQL привилегии Grant/Revoke

В этом учебном пособии вы узнаете, как предоставлять и отзывать привилегии в PostgreSQL с помощью синтаксиса и примеров.

Описание

Вы можете предоставить права GRANT и REVOKE для различных объектов базы данных в PostgreSQL. Мы рассмотрим, как предоставлять и отзывать привилегии для таблиц в PostgreSQL.

Предоставить привилегии на таблицу

Вы можете предоставить пользователям различные привилегии для таблиц. Этими разрешениями могут быть любая комбинация SELECT, INSERT, UPDATE или DELETE, INDEX, CREATE, ALTER, DROP, GRANT OPTION or ALL.

Синтаксис

Синтаксис для предоставления привилегий на таблицу в PostgreSQL:

GRANT privileges ON object TO user;
privileges
Привилегии назначать. Это может быть любое из следующих значений:

Привилегии Описание
SELECT Возможность выполнять операторы SELECT для таблицы.
INSERT Возможность выполнять операторы INSERT для таблицы.
UPDATE Возможность выполнять операторы UPDATE для таблицы.
DELETE Возможность выполнять операторы DELETE для таблицы.
TRUNCATE Возможность выполнять операторы TRUNCATE на таблице.
REFERENCES Возможность создания внешних ключей (требуются привилегии как для родительских, так и для дочерних таблиц).
TRIGGER Возможность создавать триггеры для таблицы.
CREATE Возможность выполнять операторы CREATE TABLE.
ALL Предоставляет все привилегии
object
Имя объекта базы данных, для которого вы предоставляете привилегии. В случае предоставления привилегий для таблицы это будет имя таблицы.
user
Имя пользователя, которому будут предоставлены эти привилегии.

Пример

Рассмотрим некоторые примеры, чтобы понять как предоставлять привилегии на таблицу в PostgreSQL.
Например, если вы хотите предоставить привилегии SELECT, INSERT, UPDATE и DELETE для таблицы с именем products для пользователя с именем trizor, вы должны выполнить следующий оператор GRANT:

GRANT SELECT, INSERT, UPDATE, DELETE ON products TO trizor;

Вы также можете использовать ключевое слово ALL, чтобы указать, что вы хотите предоставить все привилегии пользователю с именем trizor. Например:

GRANT ALL ON products TO trizor;

Если вы хотите предоставить всем пользователям только доступ SELECT к таблице products, вы можете предоставить привилегии PUBLIC. Например:

GRANT SELECT ON products TO PUBLIC;

Отзыв привилегий на таблицу

Как только вы предоставите привилегии, вам может потребоваться отменить некоторые или все эти привилегии. Для этого вы можете запустить команду revoke. Вы можете отозвать любую комбинацию SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE или ALL.

Синтаксис

Синтаксис для отзыва привилегий на таблицу в PostgreSQL:

REVOKE privileges ON object FROM user;
privileges
Привилегии для отзыва. Это может быть любое из следующих значений:

Привилегии Описание
SELECT Возможность выполнять операторы SELECT для таблицы.
INSERT Возможность выполнять операторы INSERT для таблицы.
UPDATE Возможность выполнять операторы UPDATE для таблицы.
DELETE Возможность выполнять операторы DELETE для таблицы.
TRUNCATE Возможность выполнять операторы TRUNCATE на таблице.
REFERENCES Возможность создания внешних ключей (требуются привилегии как для родительских, так и для дочерних таблиц).
TRIGGER Возможность создавать триггеры для таблицы.
CREATE Возможность выполнять операторы CREATE TABLE.
ALL Предоставляет все привилегии
object
Имя объекта базы данных, для которого вы отзываете привилегии. В случае отзыва привилегий для таблицы это будет имя таблицы.
user
Имя пользователя, для которого будут отменены эти привилегии.

Пример

Рассмотрим примеры как отзывать привилегии для таблицы in PostgreSQL.
Например, если вы хотите отозвать привилегии DELETE и UPDATE для таблицы с именем products для пользователя с именем trizor, вы должны выполнить следующий оператор REVOKE:

REVOKE DELETE, UPDATE ON products FROM trizor;

Если вы хотите отозвать все привилегии на таблицу для пользователя с именем trizor, вы можете использовать ключевое слово ALL следующим образом:

REVOKE ALL ON products FROM trizor;

Если вы предоставили привилегии SELECT * (то есть всем пользователям) в таблице products и хотели отозвать эти привилегии, вы можете выполнить следующий оператор REVOKE:

REVOKE SELECT ON products FROM PUBLIC;