GRANT в PostgreSQL: назначение привилегий

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

Основы оператора GRANT

Базовый синтаксис:

GRANT privilege_name ON object_name TO role_name;

Пример назначения права SELECT для таблицы users пользователю read_only_user:

GRANT SELECT ON users TO read_only_user;

Назначение нескольких привилегий

Можно назначить несколько привилегий одним запросом:

GRANT SELECT, INSERT, UPDATE ON users TO editor_user;

Назначение всех привилегий

Для назначения всех доступных привилегий используется ALL PRIVILEGES:

GRANT ALL PRIVILEGES ON users TO admin_user;

Назначение привилегий на базу данных

Привилегии можно назначать не только на таблицы, но и на базы данных:

GRANT CONNECT, CREATE ON DATABASE my_database TO dev_user;

Назначение привилегий на схему

Чтобы пользователь мог создавать объекты в схеме, требуется привилегия USAGE и CREATE:

GRANT USAGE, CREATE ON SCHEMA public TO dev_user;

Передача прав через WITH GRANT OPTION

При использовании WITH GRANT OPTION получатель привилегии может передавать её другим пользователям:

GRANT SELECT ON users TO manager_user WITH GRANT OPTION;

Отзыв привилегий

Для удаления ранее назначенных прав используется оператор REVOKE:

REVOKE SELECT ON users FROM read_only_user;