SQL-сервер в Linux :

ComputerBooks.ru - Электронные книги, самоучители.

 
Электронные кники доступные для скачивания
На главную Добавить в избранное Форма отправки почты Если книг читать не будешь - скоро грамоту забудешь!

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

Группы упрощают процедуру назначения прав пользователям. Обычные привилегии должны назначаться каждому пользователю по отдельности. Это может быть весьма утомительно, если нескольким пользователям требуется одинаковый уровень доступа к нескольким объектам базы данных.

Для решения этой проблемы в PostgreSQL создаются группы. При создании группы достаточно указать ее имя, причем группа может быть пустой (то есть не содержащей ни одного пользователя). Пользователи, обладающие общими привилегиями доступа, включаются в группу и в дальнейшем считаются ее членами. Права доступа к объектам базы данных предоставляются группе в целом, а не ее отдельным членам. В системах с большим количеством пользователей и баз данных группы значительно упрощают задачу управления правами.

ПРИМЕЧАНИЕ

Пользователь может входить в любое количество групп, но может и не принадлежать ни к одной группе.

Создание и удаление групп

Прежде чем переходить к управлению группами, сначала необходимо разобраться в том, как происходит создание и удаление групп. Обе операции требуют привилегий суперпользователя (за дополнительной информацией о суперпользователях обращайтесь к разделу «Управление пользователями» этой главы).

Создание группы

Любой суперпользователь может создать новую группу PostgreSQL командой SQL CREATE GROUP. Синтаксис команды CREATE GROUP:

CREATE GROUP группа [ WITH

[ SYSID идентификатор_группы ]

[ USER пользователь [. ...]]]

Параметр группа определяет имя создаваемой группы. Имена групп должны начинаться с алфавитного символа, а их длина не может превышать 31 символа. В секции WITH передаются дополнительные атрибуты. Ключевое слово SYSID задает системный идентификатор новой группы. Ключевое слово USER позволяет включить одного или нескольких пользователей в группу на стадии ее создания. Имена членов группы разделяются запятыми.

Следует помнить, что таблицы пользователей и групп в PostgreSQL существуют отдельно друг от друга. Несмотря на это, в PostgreSQL не допускается совпадение системных идентификаторов пользователей и групп.

В листинге 10.11 создается группа sales, в которую при создании включаются два пользователя, all en и vi ncent.

Листинг 10.11. Создание группы

booktown=# CREATE GROUP sales

booktown-# WITH USER alien, Vincent;

CREATE GROUP

Сообщение CREATE GROUP означает, что группа успешно создана. Чтобы убедиться в этом, а также получить список всех существующих групп, достаточно выполнить запрос к системной таблице рд_дгоир. Пример такого запроса приведен в листинге 10.12.

Листинг 10.12. Получение списка групп

booktown=# SELECT * FROM pg_group;

groname grosysid | grolist

sales | 1 | {7017.7016}

accounting | 2 |

marketing | 3

(3 rows)

Обратите внимание на столбец grol 1st — в нем перечислены идентификаторы пользователей PostgreSQL, входящих в группу. Это те самые идентификаторы, которые выводятся в представлении pg_user. Пример:

booktown=# SELECT usename FROM pg_user

booktown-# WHERE usesysid = 7017 OR usesysid = 7016;

usename

alien

vincent

(2 rows)

Удаление группы

Любой суперпользователь может удалять существующие группы командой SQL DROP GROUP. Будьте внимательны при выполнении этой команды, поскольку она необратима и вам не будет предложено подтвердить удаление группы (даже если в ней остаются пользователи). В отличие от команды DROP DATABASE, команда DROP GROUP может выполняться в транзакционном блоке.

Синтаксис команды DROP GROUP:

DROP GROUP группа

Параметр группа определяет имя удаляемой группы. В листинге 10.13 из базы данных booktown удаляется ненужная группа marketi ng.

Листинг 10.13. Удаление группы

booktown=# DROP GROUP marketing;

DROP GROUP

Сообщение DROP GROUP означает, что группа успешно удалена. Учтите, что при удалении группы назначенные ей права не уничтожаются, а всего лишь становятся «бестелесными», не связанными с реальным субъектом. Все права объекта базы данных для удаленной группы фактически относятся не к самой группе, а ее системному идентификатору.

ПРИМЕЧАНИЕ

Случайно удаленную группу можно восстановить. Для этого следует создать новую группу с тем же системным идентификатором, что у удаленной группы. Системный идентификатор назначается ключевым словом SYSID, о котором говорилось в пункте «Создание группы». Если присвоить группе права доступа к таблице и затем удалить эту группу, то права группы для таблицы останутся. Разумеется, в созданную группу нужно будет заново включить пользователей.

Назначение пользователей в группы

Включение пользователей в группы и удаление их из групп в PostgreSQL выполняется командой SQL ALTER GROUP. Синтаксис команды ALTER GROUP:

ALTER GROUP группа { ADD DROP } USER пользователь [. ... ]

Параметр группа определяет имя группы, а параметр пользователь — имя включаемого или удаляемого пользователя (в зависимости от присутствия ключевого слова ADD или DROP).

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

Предположим, ваша компания принимает в отдел сбыта двух новых работников, для которых создаются учетные записи пользователей с именами davi d и 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 приведен запрос к таблице рд_дгоир, проверяющий наличие новых пользователей в группе. Обратите внимание: количество системных идентификаторов в столбце 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.

Перевод работника завершается его включением в группу accounti ng. В следующем фрагменте использованы команды, аналогичные командам в листингах 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)



Электронные Книги по компьютерным программам

Для добавления страницы "SQL-сервер в Linux :" в избранное нажмине Ctrl+D

Книги | Статьи | Скачать

Правовая информация   

  © ComputerBooks.ru,
  При копировании материалов со страницы SQL-сервер в Linux : обязательно разместите ссылку на источник.