GRANT
Предоставление прав доступа пользователю, группе или всем пользователям базы данных.
Синтаксис:
GRANT привилегия [,…] ON объект [….] ТО { PUBLIC | GROUP группа \ пользователь }
Параметры:
- привилегия. Предоставляемая привилегия. Допустимые значения:
- SELECT – пользователю или группе разрешается выборка из всех полей заданной таблицы или представления;
- INSERT – пользователю или группе разрешается вставка данных во все поля полей заданной таблицы;
- UPDATE – пользователю или группе разрешается обновление всех полей заданной таблицы;
- DELETE – пользователю или группе разрешается удаление данных из всех полей заданной таблицы;
- RULE – пользователю или группе разрешается удаление правил из заданной таблицы;
- ALL – сокращенная запись для предоставления всех перечисленных привилегий пользователю или группе.
- объект. Имя объекта, для которого предоставляются привилегии. Допустимыми типами объектов являются таблицы, представления и последовательности.
- PUBLIC. Необязательное ключевое слово PUBLIC означает, что привилегия предоставляется всем пользователям базы данных.
- группа. Имя группы, которой предоставляются привилегии.
- пользователь. Имя пользователя PostgreSQL, которому предоставляются привилегии. Ключевое слово PUBLIC обозначает всех пользователей.
Результаты:
- CHANGE. Сообщение возвращается в том случае, если предоставление привилегий пользователю или группе прошло успешно.
- ERROR: ChangeAcl: class "объект" not found. Ошибка – указанный объект не найден в текущей базе данных.
- ERROR: aclparse: non-existent user "пользователь". Ошибка – пользователь с указанным именем не существует.
- ERROR: non-existent group "группа". Ошибка – группа не существует.
Описание
Команда GRANT предоставляет пользователям и группам права доступа к объектам. Права могут предоставляться конкретному пользователю или группе, а ключевое слово PUBLIC предоставляет их всем пользователям базы данных. По умолчанию доступ к объекту разрешен только его владельцу. После того как объект создан, владелец предоставляет права доступа к нему другим пользователям.
Чтобы предоставить частичный доступ к данным, содержащимся в таблице, создайте представление для нужного подмножества полей и/или записей и предоставьте пользователям доступ к этому представлению.
В клиенте psql информация о правах доступа к существующим объектам выводится командой \z.
Примеры
Следующая команда предоставляет пользователю manager все права доступа к таблице publishers:
booktown=# GRANT ALL ON publishers TO manager; GRANT
Ниже приведен пример использования команды \z клиента psql для вывода информации о правах доступа к таблице publishers:
booktown=# \z publishers Access permissions for database "booktown" Relation | Access permissions publishers | {"=","manager=arwR"} (1 row)