ALTER ROLE
Эта страница переведена при помощи нейросети GigaChat.
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
изменяет атрибуты роли PostgreSQL.
Первый форма этой команды, указанная в кратком описании, может изменить многие из атрибутов роли, которые можно указать в CREATE ROLE
. Все возможные атрибуты охвачены, за исключением того, что нет опций для добавления или удаления членства, используйте GRANT
и REVOKE
для этого. Атрибуты, не указанные в команде, сохраняют свои предыдущие настройки. Суперпользователи баз данных могут изменять любые из этих настроек для любой роли, кроме изменения свойства SUPERUSER
для суперпользователя начальной загрузки. Роли, не являющиеся суперпользователями, обладающие привилегией CREATEROLE
, могут изменять большинство этих свойств, но только для ролей, не являющихся супер-пользователями и репликационными ролями, которым они предоставили ADMIN OPTION
. Пользователи, не являющиеся суперпользователями, не могут изменять свойство SUPERUSER
и могут изменять свойства CREATEDB
, REPLICATION
и BYPASSRLS
только в том случае, если сами обладают соответствующим свойством. Обычные пользователи могут менять только собственный пароль.
Вторая форма команды изменяет имя роли. Суперпользователи могут переименовывать любую роль. Роли с привилегией CREATEROLE
могут переименовывать другие роли, но только если они не являются суперпользователями и для которых у них есть право ADMIN OPTION
. Текущего пользователя сеанса нельзя переименовать (нужно подключиться под другим пользователем). Поскольку пароли, зашифрованные с помощью MD5
, используют имя роли как криптографическую «соль», переименование роли приводит к сбросу такого пароля.
Оставшиеся формы команды позволяют задать значения параметров конфигурации, которые будут устанавливаться по умолчанию при старте сессии для конкретной роли — либо для всех баз данных, либо только для указанной базы, если применяется IN DATABASE
. Использование ALL
вместо имени роли позволяет задать значение параметра для всех ролей. Применение ALL
вместе с IN DATABASE
аналогично команде ALTER DATABASE ... SET ...
.
Значение параметра применяется только при входе в новую сессию роли и перекрывает соответствующее значение из postgresql.conf
или заданное через параметры запуска postgres
. Команды SET ROLE и SET SESSION AUTHORIZATION не вызывают применение новых значений. При наличии нескольких настроек приоритет следующий: настройки конкретной базы для конкретной роли, затем настройки конкретной роли, затем настройки базы.
Суперпользователи могут изменять настройки по умолчанию для любой роли. Роли с привилегией CREATEROLE
могут делать это для других ролей без прав суперпользователя, при условии что для них есть право ADMIN OPTION
. Обычные роли могут настраивать параметры только для себя. Некоторые параметры нельзя изменять этим способом, либо они доступны только суперпользователям. Задание настроек для всех ролей во всех базах также требует прав суперпользователя.
Параметры
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.
new_name
- Задает новое имя роли.
database_name
- Задает имя базы данных, для которой задается значение параметра конфигурации.
configuration_parameter
value
- Устанавливает для роли значение параметра конфигурации по умолчанию для текущей сессии равным указанному значению
value
. Если указаноDEFAULT
или используетсяRESET
, настройка удаляется.RESET ALL
удаляет все настройки для роли.SET FROM CURRENT
сохраняет текущее значение параметра как значение по умолчанию для роли. Если указаноIN DATABASE
, параметр конфигурации устанавливается или удаляется только для указанной роли и базы данных.Настройки параметров, привязанные к роли, вступают в силу только при входе в новую сессию. Команды SET ROLE и SET SESSION AUTHORIZATION не инициируют применение этих настроек.
Список допустимых параметров и их описания приведен в справке по команде SET и в разделе «Настройка сервера» документации.
Примечания
Для создания новых ролей используйте 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+1:
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 только для базы devel
:
ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;
Совместимость
ALTER ROLE
является расширением PostgreSQL.