Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

ALTER ROLE

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

Синтаксис

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 <name> [ [ WITH ] <option> [ ... ] ]

где option может принимать значения:

    SUPERUSER | NOSUPERUSER
  | CREATEDB | NOCREATEDB
  | CREATEROLE | NOCREATEROLE
  | CREATEEXTTABLE | NOCREATEEXTTABLE [ ( <attribute>='<value>' [, ...] ) ]
  | INHERIT | NOINHERIT
  | LOGIN | NOLOGIN
  | REPLICATION | NOREPLICATION
  | CONNECTION LIMIT <connlimit>
  | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '<password>'
  | VALID UNTIL '<timestamp>'

где значения attribute и value могут быть следующими:

   type='readable'|'writable'
   protocol='gpfdist'|'gpfdists'|'http'

Описание

Команда ALTER ROLE изменяет атрибуты роли Greengage DB. Существует несколько вариантов этой команды.

  • 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 ресурсные очереди не имеют эффекта. См. CREATE RESOURCE QUEUE для получения дополнительной информации.

  • RESOURCE GROUP — назначает ресурсную группу для роли. В этом случае роль будет подчиняться ограничениям на одновременные транзакции, память и процессорное время, настроенным для ресурсной группы. Вы можете назначить одну ресурсную группу одной или нескольким ролям. Вы не можете назначить роли ресурсную группу, созданную для внешнего компонента. См. CREATE RESOURCE GROUP для получения дополнительной информации.

Параметры

Параметр Описание

name

Имя роли, атрибуты которой необходимо изменить

new_name

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

database_name

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

<configuration_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, определяемой роли разрешено создавать внешние таблицы. Тип по умолчанию (type) — readable (читающая таблица), а протокол по умолчанию (protocol) — gpfdist, если они не указаны. NOCREATEEXTTABLE (по умолчанию) запрещает роли возможность создавать внешние таблицы. Обратите внимание, что внешние таблицы, использующие протоколы file или execute, могут быть созданы только суперпользователями

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_point>

Например:

ALTER USER user1 DENY BETWEEN day 'Sunday' time '00:00' AND day 'Monday' time '00:00';

DROP 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 anakin 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 darth 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 является расширением Greengage DB.

См. также