ALTER ROLE#

ALTER ROLE

ALTER ROLE

ALTER ROLE — изменить роль базы данных

Синтаксис

ALTER ROLE role_specification [ WITH ] option [ ... ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'

ALTER ROLE name RENAME TO new_name

ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL

where role_specification can be:

    role_name
  | CURRENT_ROLE
  | CURRENT_USER
  | SESSION_USER

Описание

ALTER ROLE изменяет атрибуты роли Tantor SE.

Первый вариант этой команды, перечисленный в описании, может изменять множество атрибутов роли, которые можно указать в CREATE ROLE. (Все возможные атрибуты рассмотрены, за исключением опций для добавления или удаления членств; для этого используйте GRANT и REVOKE). Атрибуты, не упомянутые в команде, сохраняют свои предыдущие настройки. Суперпользователи базы данных могут изменять любые из этих настроек для любой роли. Роли, имеющие привилегию CREATEROLE, могут изменять любые из этих настроек, за исключением SUPERUSER, REPLICATION и BYPASSRLS; но только для ролей, не являющихся суперпользователями и репликацией. Обычные роли могут изменять только свой собственный пароль.

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

Оставшиеся варианты изменяют роль по умолчанию сессии для конфигурационной переменной, либо для всех баз данных, либо, когда указано предложение IN DATABASE, только для сессий в указанной базе данных. Если вместо имени роли указано ALL, это изменяет настройку для всех ролей. Использование ALL с IN DATABASE фактически эквивалентно использованию команды ALTER DATABASE ... SET ....

Всякий раз, когда роль впоследствии начинает новую сессию, указанное значение становится значением сессии по умолчанию, переопределяя любые настройки, присутствующие в файле postgresql.conf или полученные из командной строки postgres. Это происходит только при входе в систему; выполнение команды SET ROLE или SET SESSION AUTHORIZATION не приводит к установке новых значений конфигурации. Настройки, установленные для всех баз данных, переопределяются настройками, присоединенными к роли для конкретной базы данных. Настройки для конкретных баз данных или конкретных ролей переопределяют настройки для всех ролей.

Суперпользователи могут изменять значения по умолчанию для сессий любого пользователя. Роли, обладающие привилегией CREATEROLE, могут изменять значения по умолчанию для ролей, не являющихся суперпользователями. Обычные роли могут устанавливать значения по умолчанию только для себя. Некоторые конфигурационные переменные нельзя устанавливать таким образом или можно установить только в случае, если команду выполняет суперпользователь. Только суперпользователи могут изменять настройки для всех ролей во всех базах данных.

Параметры

name

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

CURRENT_ROLE
CURRENT_USER

Измените текущего пользователя вместо явно указанной роли.

SESSION_USER

Изменить текущего пользователя сессии вместо явно указанной роли.

SUPERUSER
NOSUPERUSER
CREATEDB
NOCREATEDB
CREATEROLE
NOCREATEROLE
INHERIT
NOINHERIT
LOGIN
NOLOGIN
REPLICATION
NOREPLICATION
BYPASSRLS
NOBYPASSRLS
CONNECTION LIMIT connlimit
[ ENCRYPTED ] PASSWORD 'password'
PASSWORD NULL
VALID UNTIL 'timestamp'

Эти предложения изменяют атрибуты, установленные изначально с помощью CREATE ROLE. Дополнительную информацию см. на странице справки CREATE ROLE.

new_name

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

database_name

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

configuration_parameter
value

Установите значение сессии этой роли для указанного параметра конфигурации в заданное значение. Если значение value равно DEFAULT или, аналогично, используется RESET, то настройка переменной, специфичной для роли, удаляется, и роль будет наследовать системную настройку по умолчанию в новых сессиях. Используйте RESET ALL, чтобы очистить все настройки, специфичные для роли. SET FROM CURRENT сохраняет текущее значение параметра сессии в качестве специфичного для роли значения. Если указано IN DATABASE, параметр конфигурации устанавливается или удаляется только для указанной роли и базы данных.

Все настройки переменных, специфичных для роли, вступают в силу только при входе в систему; команды SET ROLE и SET SESSION AUTHORIZATION не обрабатывают настройки переменных, специфичных для роли.

См. SET и Глава 19 для получения дополнительной информации о допустимых именах параметров и их значениях.

Примечания

Используйте тег CREATE ROLE для добавления новых ролей и DROP ROLE для удаления роли.

ALTER ROLE не может изменить членство роли. Используйте GRANT и REVOKE для этого.

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

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

Примеры

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

ALTER ROLE davide WITH PASSWORD 'hu8jmn3';

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

ALTER ROLE davide WITH PASSWORD NULL;

Измените дату истечения срока действия пароля, указав, что пароль должен истечь в полдень 4 мая 2015 года с использованием часового пояса, который находится на один час впереди UTC:

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

Сделать пароль действительным навсегда:

ALTER ROLE fred VALID UNTIL 'infinity';

Дайте роли возможность управлять другими ролями и создавать новые базы данных:

ALTER ROLE miriam CREATEROLE CREATEDB;

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

ALTER ROLE worker_bee SET maintenance_work_mem = 100000;

Установите для роли нестандартное, специфичное для базы данных значение параметра client_min_messages:

ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;

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

Команда ALTER ROLE является расширением Tantor SE.