Добавление пользователей к базе данных PostgreSQL

В PostgreSQL роли используются для авторизации в кластере баз данных и в базах данных. Вы добавляете роли в кластер баз данных PostgreSQL.

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

Вы можете также создать роли группы (group roles), к которым можно добавить роли пользователя (login roles). Затем можно определить права доступа для группы, которые будут применяться ко всем связанным ролям пользователя.

ПримечаниеПримечание:

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

Для создания роли в кластере баз данных PostgreSQL можно использовать приложение клиента PostgreSQL, например pgAdmin III или PL/pgSQL. В шагах ниже показано, как создать роль, схему и группу с помощью PL/pgSQL и наделить правами доступа роль или группу.

Шаги:
  1. Войдите в psql в качестве пользователя с правами создания других ролей в СУБД. Обычно это суперпользователь postgres.
  2. Выполните команду CREATE ROLE.

    В данном примере роль пользователя, role4u, создается с шифрованным паролем. Роль может создавать объекты в базе данных, но не является суперпользователем, не наследует права доступа групп и не может создавать роли в кластере баз данных.

    CREATE ROLE role4u LOGIN 
    ENCRYPTED PASSWORD 'super.secret' 
    NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE;
    

    ПодсказкаПодсказка:

    Если вы заранее знаете, что этот пользователь (логин) будет включен в группу, создайте логин с правами доступа INHERIT.

  3. Выполните команду CREATE SCHEMA для создания схемы для роли пользователя в той базе данных, где хранится база геоданных.

    В этом примере создается соответствующая схема role4u, и пользователю role4u предоставляется разрешение использовать схему:

    CREATE SCHEMA role4u AUTHORIZATION role4u;
    

  4. Наделите роль пользователя правами USAGE и CREATE в схеме.

    Это необходимо для того, чтобы пользователь мог создавать таблицы файла журнала. Более подробно о таблицах файла журнала см. в Опции настройки таблиц файлов журнала ArcSDE для PostgreSQL.

    GRANT USAGE ON SCHEMA role4u TO role4u;
    GRANT CREATE ON SCHEMA role4u TO role4u;
    
  5. Предоставьте права USAGE в схеме другим ролям пользователя или группы, которым необходим доступ к данным в схеме пользователя. В этом примере право USAGE предоставляется группе public с тем, чтобы все пользователи, подключающиеся к базе данных, имели доступ к данным в схеме role4u:
    GRANT USAGE ON SCHEMA role4u TO public;
    
  6. Если вы хотите включить пользователя (логин) в группу для управления правами доступа, создайте роль группы.

    Например, вы можете создать группу для всех пользователей, создающих данные в базе геоданных. Здесь именем роли группы будет dataowner:

    CREATE ROLE dataowner 
    NOSUPERUSER NOINHERIT CREATEDB NOCREATEROLE;
    
  7. Предоставьте права доступа роли группы соответствующим ролям пользователя.

    В этом примере права группы предоставляются пользователю role4u. Это выражение необходимо выполнить для всех других пользователей (логинов), которых вы решили добавить к группе.

    GRANT dataowner TO role4u;
    
  8. Если роль пользователя создана без наследования прав группы (как в примерах этой темы), включите для роли пользователя наследование прав доступа групп, в которые она входит.
    ALTER ROLE role4u INHERIT;
    
  9. Если вы используете группы, вы можете предоставить группе права доступа к другим наборам данных. Если нет, предоставьте права доступа отдельным ролям пользователя.

    В этом примере группе 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;
    
5/10/2014