ALTER ROLE

Изменение роли базы данных (пользователя или группы).

Синтаксис

ALTER ROLE name [ [ WITH ] option [ ... ] ]

При этом option может быть:

    SUPERUSER | NOSUPERUSER
  | CREATEDB | NOCREATEDB
  | CREATEROLE | NOCREATEROLE
  | CREATEEXTTABLE | NOCREATEEXTTABLE  [ ( attribute='value' [, ...] )
     where attributes and values are:
       type='readable'|'writable'
       protocol='gpfdist'|'http'
  | INHERIT | NOINHERIT
  | LOGIN | NOLOGIN
  | REPLICATION | NOREPLICATION
  | CONNECTION LIMIT connlimit
  | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
  | VALID UNTIL 'timestamp'

ALTER ROLE name RENAME TO new_name

ALTER ROLE { name | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER ROLE { name | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
ALTER ROLE { name | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
ALTER ROLE { name | ALL } [ IN DATABASE database_name ] RESET ALL
ALTER ROLE name RESOURCE QUEUE {queue_name | NONE}
ALTER ROLE name RESOURCE GROUP {group_name | NONE}

Описание

ALTER ROLE изменяет свойства роли в базе данных YMatrix, и существует несколько вариантов этой команды.

WITH option

  • Изменяет большинство атрибутов роли, которые можно указать в команде CREATE ROLE; включает все возможные атрибуты, за исключением опций добавления или удаления членства — для этих целей используйте команды GRANT и REVOKE. Свойства, не указанные в данной команде, сохраняют свои исходные значения. Суперпользователи могут изменять любые настройки любой роли. Роли с привилегией CREATEROLE могут изменять эти настройки, но ограничены ролями без прав суперпользователя и без прав репликации. Обычные пользователи могут изменять только свой пароль.

RENAME

  • Изменяет имя роли. Суперпользователи базы данных могут переименовать любую роль. Роли с привилегией CREATEROLE могут переименовывать роли, не являющиеся суперпользователями. Невозможно переименовать текущего пользователя сессии (нельзя переименовать роль, от имени которой установлено соединение). Поскольку MD5-шифрованные пароли используют имя роли как ключ, при переименовании роли её пароль будет очищен, если он был зашифрован по алгоритму MD5.

SET | RESET

  • Изменяет значение по умолчанию для указанного параметра конфигурации в сессии роли. Если указано IN DATABASE, изменения применяются только к указанной базе данных, иначе — ко всем базам данных. Если вместо имени роли указано ALL, настройки изменяются для всех ролей. Использование ALL в предложении IN DATABASE эквивалентно выполнению команды ALTER DATABASE...SET....
    Каждый раз, когда роль начинает новую сессию, указанное значение становится значением по умолчанию, перекрывая настройки из файла конфигурации сервера (postgresql.conf) или заданные через командную строку postgres. Это происходит только при входе в систему; выполнение SET ROLE или SET SESSION AUTHORIZATION не вызывает установку новых значений.
    Настройки, специфичные для базы данных и привязанные к роли, имеют приоритет над общими настройками базы данных. Настройки для конкретной базы данных или роли имеют приоритет над настройками для всех ролей.
    Для ролей без привилегий LOGIN сессионные значения по умолчанию не действуют. Обычные пользователи могут изменять собственные сессионные значения по умолчанию. Суперпользователи могут изменять значения по умолчанию для любого пользователя. Роли с привилегией CREATEROLE могут изменять значения по умолчанию для ролей, не являющихся суперпользователями. Обычные пользователи могут устанавливать значения по умолчанию только для себя. Некоторые переменные конфигурации нельзя устанавливать таким способом или могут быть установлены только суперпользователем.

RESOURCE QUEUE

  • Назначает роли очереди ресурсов управления рабочей нагрузкой. При выполнении запросов роли ограничиваются выделенными очередями ресурсов. Укажите NONE, чтобы назначить роли очередь ресурсов по умолчанию. Одна роль может принадлежать только одной очереди ресурсов. Для ролей без привилегий LOGIN сессионные значения по умолчанию не действуют.

RESOURCE GROUP

  • Назначает группу ресурсов роли. После этого роль подчиняется ограничениям на количество одновременных транзакций, память и использование ЦП, заданным для группы ресурсов. Одну группу ресурсов можно назначить одной или нескольким ролям. Группы ресурсов, созданные для внешних компонентов, не могут быть назначены ролям.

Параметры

name

  • Имя роли, которую необходимо изменить.

new_name

  • Новое имя роли.

database_name

  • Имя базы данных, для которой будут установлены параметры конфигурации.

config_parameter=value

  • Устанавливает значение по умолчанию для указанного параметра конфигурации в сессии этой роли. Если значение — DEFAULT, либо указано RESET, то настройка указанного параметра для роли будет удалена, и роль будет наследовать системное значение по умолчанию в новой сессии. RESET ALL позволяет очистить все специальные настройки роли. SET FROM CURRENT сохраняет текущее значение параметра сессии как значение, заданное для роли. Если указано IN DATABASE, это относится только к указанной базе данных роли. Когда роль открывает новую сессию, указанное значение параметра становится значением по умолчанию, перекрывая настройки из файла конфигурации сервера (postgresql.conf) или полученные из командной строки postgres.
    Настройки переменных, заданные для роли, применяются только при входе в систему; команды SET ROLE и SET SESSION AUTHORIZATION не влияют на установку этих значений.

group_name

  • Имя группы ресурсов, назначенной роли. Укажите group_name, чтобы удалить текущую группу ресурсов, назначенную роли, и использовать NONE для назначения группы ресурсов по умолчанию в зависимости от возможностей роли. Роль SUPERUSER назначается группе ресурсов admin_group, а неадминистративным ролям — default_group.
    Группы ресурсов, созданные для внешних компонентов, не могут быть назначены ролям.

queue_name

  • Имя очереди ресурсов, назначаемой роли уровня пользователя. Только роли с привилегиями LOGIN могут быть назначены очередям ресурсов. Чтобы отменить назначение очереди ресурсов и поместить роль в очередь по умолчанию, укажите NONE. Одна роль может принадлежать только одной очереди ресурсов.

SUPERUSER | NOSUPERUSER

CREATEDB | NOCREATEDB

CREATEROLE | NOCREATEROLE

CREATEUSER | NOCREATEUSER

  • CREATEUSER и NOCREATEUSER устарели, но всё ещё принимаются как синонимы SUPERUSER и NOSUPERUSER. Обратите внимание, что они не эквивалентны предложениям CREATEROLE и NOCREATEROLE.

CREATEEXTTABLE | NOCREATEEXTTABLE [(attribute='value')]

  • Если указано CREATEEXTTABLE, роли разрешается создавать внешние таблицы. Если не указано, тип по умолчанию — readable, протокол по умолчанию — gpfdist. NOCREATEEXTTABLE (по умолчанию) запрещает роли создавать внешние таблицы. Обратите внимание, что файлы внешних таблиц или используемые протоколы могут создаваться только суперпользователями.

INHERIT | NOINHERIT

LOGIN | NOLOGIN

REPLICATION

NOREPLICATION

CONNECTION LIMIT connlimit

PASSWORD password

ENCRYPTED | UNENCRYPTED

VALID UNTIL 'timestamp'

  • Эти предложения изменяют первоначальные свойства роли, заданные при помощи CREATE ROLE.

DENY deny_point

DENY BETWEEN deny_point AND deny_point

  • Ключевые слова DENY и DENY BETWEEN устанавливают временные ограничения, применяемые при входе в систему. DENY задаёт день или время, когда доступ запрещён. DENY BETWEEN задаёт интервал времени, в течение которого доступ запрещён. Оба используют следующие форматы параметра deny_point:
    DAY day [ TIME 'time' ]
    Параметр deny_point состоит из двух частей и имеет следующий формат:
    Для дня: {'Sunday' | 'Monday' | 'Tuesday' |'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 0-6 }
    Для времени:
    { 00-23 : 00-59 | 01-12 : 00-59 { AM | PM }}
    Предложение DENY BETWEEN использует два параметра deny_point.DENY BETWEEN deny_point AND deny_pointDROP DENY FOR deny_point
  • Предложение DROP DENY FOR удаляет временное ограничение для роли. Использует параметр deny_point, описанный выше.

Замечания

Для создания роли используйте команду CREATE ROLE, для удаления — DROP ROLE.

Чтобы добавлять и удалять членов роли, используйте команды GRANT и REVOKE.

Следует соблюдать осторожность при указании незашифрованного пароля в этой команде. Пароль будет передан на сервер в открытом виде и может быть записан в истории команд клиента или в журнале сервера. Командная строка psql содержит метакоманду \password, которая может использоваться для безопасного изменения пароля роли.

Вы также можете привязывать значения по умолчанию для сессии к конкретной базе данных, а не к роли. В случае конфликта настройки, специфичные для роли, имеют приоритет над настройками, специфичными для базы данных. См. ALTER DATABASE.

Примеры

Изменение пароля роли:

ALTER ROLE daria WITH PASSWORD 'passwd123';

Удаление пароля роли:

ALTER ROLE daria WITH PASSWORD NULL;

Изменение даты истечения срока действия пароля:

ALTER ROLE scott VALID UNTIL 'May 4 12:00:00 2015 +1';

Сделать пароль бессрочным:

ALTER ROLE luke VALID UNTIL 'infinity';

Предоставление роли прав на создание других ролей и новых баз данных:

ALTER ROLE joelle CREATEROLE CREATEDB;

Назначение роли нестандартного значения параметра maintenance_work_mem:

ALTER ROLE admin SET maintenance_work_mem = 100000;

Назначение роли нестандартного значения параметра client_min_messages для указанной базы данных:

ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;

Назначение роли очереди ресурсов:

ALTER ROLE sammy RESOURCE QUEUE poweruser;

Предоставление роли права на создание внешних таблиц с возможностью записи:

ALTER ROLE load CREATEEXTTABLE (type='writable');

Запрет входа для роли по воскресеньям:

ALTER ROLE user3 DENY DAY 'Sunday';

Отмена ограничения на вход по воскресеньям:

ALTER ROLE user3 DROP DENY FOR DAY 'Sunday';

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

ALTER ROLE parttime_user RESOURCE GROUP rg_light;

Совместимость

Оператор ALTER ROLE является расширением базы данных YMatrix.

Смотрите также

CREATE ROLE, DROP ROLE