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> |
Устанавливает значение по умолчанию для указанного конфигурационного параметра сеанса этой роли в заданное значение.
Если значение равно Настройки переменных, специфичные для роли, вступают в силу только при входе в систему; |
group_name |
Имя ресурсной группы для назначения этой роли.
Указание параметру |
queue_name |
Имя ресурсной очереди, которой должна быть назначена роль пользовательского уровня.
Только роли с привилегией |
SUPERUSER | NOSUPERUSER |
|
CREATEEXTTABLE | NOCREATEEXTTABLE [(<attribute>='<value>')] |
Если указано |
INHERIT | NOINHERIT |
Эти условия изменяют атрибуты роли, изначально установленные командой |
DENY <deny_point> DENY BETWEEN <deny_point> AND <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.