Добавление пользователей к базе данных 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;