• Иллюстрированный самоучитель по PostgreSQL

    Предоставление привилегий

    Предоставление привилегий командой GRANT

    Для предоставления привилегий пользователям и группам используется команда SQL GRANT. Синтаксис команды GRANT:

    GRANT привилегия [,…] ON объект [,…]
    ТО { PUBLIC | пользователь \ GROUP группа }
    

    Параметр привилегия заменяется любой из привилегий, перечисленных в табл. 10.2, а параметр объект определяет имя объекта базы данных (таблицы, представления или последовательности), для которого предоставляется привилегия. Секция, следующая после ключевого слова ТО, указывает, кому предоставляется привилегия. Допускается перечисление нескольких привилегии и объектов через запятую.

    В одной команде GRANT может использоваться только один из вариантов, перечисленных за ключевым словом ТО. С ключевым словом PUBLIC привилегия предоставляется всем пользователям. Если указано имя пользователя или группы, привилегия предоставляется конкретному пользователю или группе.

    Предположим, пользователю manager понадобились все права доступа к таблицам customers, books, editions и publishers. В листинге 10.17 все эти права предоставляются пользователю manager в одной команде GRANT.

    Листинг 10.17. Предоставление привилегий пользователям.

    booktown=# GRANT ALL ON customers, books, editions, publishers
    booktown-# TO manager;
    CHANGE
    

    Ключевое слово ALL предоставляет пользователю manager все возможные права доступа (SELECT, UPDATE и т. д.) к перечисленным объектам. Сообщение CHANGE означает, что модификация привилегий прошла успешно. Помните, что для проверки прав доступа к объекту базы данных в psql может использоваться команда \z:

    booktown=# \z publishers
    Access permissions for database "booktown"
    Relation Access permissions
    publishers | {"="."manager=arwR"}
    (1 row)
    

    Рассмотрим другой пример – использование ключевого слова GROUP для предоставления привилегий членам группы. Допустим, всему отделу сбыта нужно предоставить право просмотра таблицы customers, но без возможности ее модификации. В листинге 10.18 всем членам группы sales предоставляется право доступа SELECT к таблице customers.

    Листинг 10.18. Предоставление групповых привилегий.

    booktown=# GRANT SELECT ON customers TO GROUP sales:
    CHANGE
    booktown=# \z customers
    Access permissions for database "booktown"
    Relation | Access permissions
    customers | {"="."manager=arwR"."group sales=r"}
    (1 row)
    
    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.