Добавление пользователей к базе данных PostgreSQL
В PostgreSQL роли используются для авторизации в кластере баз данных и в базах данных. Вы добавляете роли в кластер баз данных PostgreSQL.
Отдельные пользователи базы данных называются ролями пользователя (login roles). Вы должны также создать схему в этой базе данных для всех ролей пользователя, которые будут иметь объекты в базе геоданных. Схема должна иметь то же имя, что и роль пользователя (login role), и находиться в ее собственности.
Вы можете также создать роли группы (group roles), к которым можно добавить роли пользователя (login roles). Затем можно определить права доступа для группы, которые будут применяться ко всем связанным ролям пользователя.

Кроме того, нужно создать соответствующую схему для каждой роли пользователя в группе, которая будет владеть объектами в базе геоданных. Вы не можете создать схему для роли группы.
Для создания роли в кластере баз данных PostgreSQL можно использовать приложение клиента PostgreSQL, например pgAdmin III или PL/pgSQL. В шагах ниже показано, как создать роль, схему и группу с помощью PL/pgSQL и наделить правами доступа роль или группу.
- Войдите в psql в качестве пользователя с правами создания других ролей в СУБД. Обычно это суперпользователь postgres.
-
Выполните команду CREATE ROLE.
В данном примере роль пользователя, role4u, создается с шифрованным паролем. Роль может создавать объекты в базе данных, но не является суперпользователем, не наследует права доступа групп и не может создавать роли в кластере баз данных.
CREATE ROLE role4u LOGIN ENCRYPTED PASSWORD 'super.secret' NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE;
Подсказка:
Если вы заранее знаете, что этот пользователь (логин) будет включен в группу, создайте логин с правами доступа INHERIT.
-
Выполните команду CREATE SCHEMA для создания схемы для роли пользователя в той базе данных, где хранится база геоданных.
В этом примере создается соответствующая схема role4u, и пользователю role4u предоставляется разрешение использовать схему:
CREATE SCHEMA role4u AUTHORIZATION role4u;
- Наделите роль пользователя правами USAGE и CREATE в схеме.
Это необходимо для того, чтобы пользователь мог создавать таблицы файла журнала. Более подробно о таблицах файла журнала см. в Опции настройки таблиц файлов журнала ArcSDE для PostgreSQL.
GRANT USAGE ON SCHEMA role4u TO role4u; GRANT CREATE ON SCHEMA role4u TO role4u;
-
Предоставьте права USAGE в схеме другим ролям пользователя или группы, которым необходим доступ к данным в схеме пользователя. В этом примере право USAGE предоставляется группе public с тем, чтобы все пользователи, подключающиеся к базе данных, имели доступ к данным в схеме role4u:
GRANT USAGE ON SCHEMA role4u TO public;
-
Если вы хотите включить пользователя (логин) в группу для управления правами доступа, создайте роль группы.
Например, вы можете создать группу для всех пользователей, создающих данные в базе геоданных. Здесь именем роли группы будет dataowner:
CREATE ROLE dataowner NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE;
-
Предоставьте права доступа роли группы соответствующим ролям пользователя.
В этом примере права группы предоставляются пользователю role4u. Это выражение необходимо выполнить для всех других пользователей (логинов), которых вы решили добавить к группе.
GRANT dataowner TO role4u;
-
Если роль пользователя создана без наследования прав группы (как в примерах этой темы), включите для роли пользователя наследование прав доступа групп, в которые она входит.
ALTER ROLE role4u INHERIT;
-
Если вы используете группы, вы можете предоставить группе права доступа к другим наборам данных. Если нет, предоставьте права доступа отдельным ролям пользователя.
В этом примере группе dataowner предоставлено право доступа к таблицам geometry_columns и spatial_ref_sys в схеме public. Эти права доступа требуются для всех пользователей, которые создают данные c типом хранения геометрии PostGIS.
GRANT SELECT, INSERT, UPDATE, DELETE ON public.geometry_columns TO dataowner; GRANT SELECT ON public.spatial_ref_sys TO dataowner;