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

Управление группами

Включение пользователя в группу

Предположим, ваша компания принимает в отдел сбыта двух новых работников, для которых создаются учетные записи пользователей с именами david и ben. В листинге 10.14 приведена команда ALTER GROUP для включения новых пользователей в группу sales.

Листинг 10.14. Включение пользователей в группу.

booktown=# ALTER GROUP sales ADD USER david .ben;
ALTER GROUP

Сообщение ALTER GROUP означает, что пользователи david и ben успешно включены в группу sales. В листинге 10.15 приведен запрос к таблице рg_group, проверяющий наличие новых пользователей в группе. Обратите внимание: количество системных идентификаторов в столбце grolist для группы sales увеличилось до четырех.

Листинг 10.15. Проверка факта включения пользователей в группу.

booktown=# SELECT * FROM pg_group WHERE groname = 'sales':
groname | grosysid | grolist
sales 1 | {7019.7018.7017.7016}
(1 row)

Удаление пользователя из группы

Предположим, один из работников был переведен из отдела сбыта в бухгалтерию. Чтобы сохранить правильный состав групп и убедиться в том, что он не обладает правами, предоставляемыми только группе sales, пользователя david необходимо исключить из группы. Задача решается командой ALTER GROUP, приведенной в листинге 10.16.

Листинг 10.16. Удаление пользователя из группы.

booktown=# ALTER GROUP sales DROP USER david;
ALTER GROUP

Сообщение ALTER GROUP означает, что пользователь david успешно удален из группы sales.

Перевод работника завершается его включением в группу accounting. В следующем фрагменте использованы команды, аналогичные командам в листингах 10.14 и 10.15. В результате пользователь david включается в группу accounting, и любые права, предоставляемые этой группе, будут автоматически предоставляться пользователю david до тех пор, пока он остается членом этой группы.

booktown=# ALTER GROUP accounting ADD USER david:
ALTER GROUP
booktown=# SELECT * FROM pg_group;
groname | grosysid | grolist
sales | 1 | {7016.7017.7019}
accounting 2 | {7018}
(2 rows)
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.