Оператор 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;