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