Документация по PostgreSQL 8.4.2 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 5. Определение данных | Fast Forward | Next |
Когда вы создаёте объект базы данных, вы становитесь его владельцем. По умолчанию, только владелец объекта может делать с ним всё что угодно. Чтобы другие пользователи могли использовать объект, им должны быть предоставлены привилегии. (Однако, пользователи, у которых установлен атрибут суперпользователя, всегда могут получить доступ к любому объекту.)
Существует несколько различных привилегий: SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE и USAGE. Эти привилегии применяются к отдельному объекту, в зависимости от типа объёкта (таблица, функция и т.д.) Полную информацию о разных типах привилегий, поддерживаемых PostgreSQL можно найти в GRANT. Следующие секции и главы также будут показывать вам как используются эти привилегии.
Право измененять или удалять объект, всегда является привилегией только владельца.
Note: Чтобы изменить владельца таблицы, индекса, последовательности или представления, используйте команду ALTER TABLE. Для каждого другого типа объекта существуют соответствующие команды ALTER.
Для назначения привилегий, используется команда GRANT. Например, если существует пользователь joe и таблица accounts, то привилегия на обновление этой таблицы данному пользователю предоставляется так:
GRANT UPDATE ON accounts TO joe;
Если в качестве привелегии указывается ALL, то для заданного типа объекта предоставляются все привелегии.
Специальное имя "пользователя" PUBLIC может быть использовано, чтобы предоставить привелегию каждому пользователю СУБД. Чтобы упростить управление привелегиями для большого количества пользователей в СУБД, можно создать "групповые" роли; подробности смотрите в Chapter 20.
Чтобы отобрать привилегию, используйте команду REVOKE:
REVOKE ALL ON accounts FROM PUBLIC;
У владельца объекта всегда неявно существуют специальные привилегии (например, права на выполнение DROP, GRANT, REVOKE и т.д.) и они не могут быть предоставлены или отобраны. Но владелец объекта может отобрать у себя свои собственные обычные привилегии, например сделать таблицу доступной для себя самого только на чтение и т.д.
Обычно, только владелец объекта (или суперпользователь) может предоставить или отобрать привилегии на этот объект. Однако, возможно предоставить пользователю привилегию с указанием опции WITH GRANT OPTION, которая даст ему права на предоставление этой привилегии другим пользователям. Если данная опция впоследствие отменяется, то все кто получил привилегию от пользователя с этой опцией (напрямую или через цепочку) потеряют эту привилегию. Подробности см. в GRANT и REVOKE.