ALTER ROLE — изменение роли в базе данных
ALTER ROLErole_specification[ WITH ]option[ ... ] гдеoptionможет быть: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMITconnlimit| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL | VALID UNTIL 'timestamp' ALTER ROLEnameRENAME TOnew_nameALTER ROLE {role_specification| ALL } [ IN DATABASEdatabase_name] SETconfiguration_parameter{ TO | = } {value| DEFAULT } ALTER ROLE {role_specification| ALL } [ IN DATABASEdatabase_name] SETconfiguration_parameterFROM CURRENT ALTER ROLE {role_specification| ALL } [ IN DATABASEdatabase_name] RESETconfiguration_parameterALTER ROLE {role_specification| ALL } [ IN DATABASEdatabase_name] RESET ALL гдеrole_specificationможет быть:role_name| CURRENT_ROLE | CURRENT_USER | SESSION_USER
Команда ALTER ROLE изменяет атрибуты роли в
Digital Q.DataBase.
Первый вариант этой команды, перечисленный в синтаксисе, может изменять
многие атрибуты роли, которые могут быть указаны в
CREATE ROLE.
(Охватываются все возможные атрибуты,
за исключением того, что нет опций для добавления или удаления членства; используйте
GRANT и
REVOKE для этого.)
Атрибуты, не упомянутые в команде, сохраняют свои предыдущие значения.
Суперпользователи базы данных могут изменять любые из этих настроек для любой роли, за исключением
изменения свойства SUPERUSER для
загрузочного суперпользователя.
Роли, не являющиеся суперпользователями, но имеющие привилегию CREATEROLE, могут
изменять большинство этих свойств, но только для ролей, не являющихся суперпользователями и
не являющихся ролями репликации, для которых им была предоставлена
ADMIN OPTION. Не-суперпользователи не могут изменять свойство
SUPERUSER и могут изменять свойства
CREATEDB, REPLICATION и
BYPASSRLS только если сами обладают соответствующим свойством.
Обычные роли могут изменять только свой собственный пароль.
Второй вариант изменяет имя роли.
Суперпользователи базы данных могут переименовывать любые роли.
Роли, имеющие привилегию CREATEROLE, могут переименовывать роли, не являющиеся суперпользователями,
для которых им была предоставлена ADMIN OPTION.
Пользователь текущего сеанса не может быть переименован.
(Если это необходимо, подключитесь под другим пользователем.)
Поскольку пароли, зашифрованные с помощью MD5, используют имя роли в качестве
криптографической соли, переименование роли очищает её пароль, если
пароль зашифрован с помощью MD5.
Оставшиеся варианты изменяют значение по умолчанию на уровне сеанса для конфигурационной переменной роли,
либо для всех баз данных, либо, когда указано предложение IN
DATABASE, только для сеансов в указанной базе данных. Если вместо имени роли указано
ALL, это изменяет настройку для всех ролей. Использование ALL
с IN DATABASE фактически эквивалентно использованию команды
ALTER DATABASE ... SET ....
Всякий раз, когда роль впоследствии
начинает новый сеанс, указанное значение становится значением по умолчанию для сеанса,
переопределяя любую настройку, присутствующую в
postgresql.conf или переданную через командную строку postgres.
Это происходит только во время входа в систему; выполнение
SET ROLE или
SET SESSION AUTHORIZATION не приводит к установке новых
значений конфигурации.
Настройки, установленные для всех баз данных, переопределяются настройками для конкретной базы данных,
привязанными к роли. Настройки для конкретных баз данных или конкретных ролей переопределяют
настройки для всех ролей.
Суперпользователи могут изменять значения по умолчанию на уровне сеанса для любого пользователя. Роли, имеющие
привилегию CREATEROLE, могут изменять значения по умолчанию для ролей, не являющихся суперпользователями,
для которых им была предоставлена ADMIN OPTION.
Обычные роли могут устанавливать значения по умолчанию только для себя.
Некоторые конфигурационные переменные не могут быть установлены таким образом или могут быть
установлены только если команду выдаёт суперпользователь. Только суперпользователи могут изменять настройку
для всех ролей во всех базах данных.
name #Имя роли, атрибуты которой нужно изменить.
CURRENT_ROLECURRENT_USER #Изменить текущего пользователя вместо явно указанной роли.
SESSION_USER #Изменить пользователя текущего сеанса вместо явно указанной роли.
SUPERUSERNOSUPERUSERCREATEDBNOCREATEDBCREATEROLENOCREATEROLEINHERITNOINHERITLOGINNOLOGINREPLICATIONNOREPLICATIONBYPASSRLSNOBYPASSRLSCONNECTION LIMIT connlimitENCRYPTED ] PASSWORD 'password'PASSWORD NULLVALID UNTIL 'timestamp' #
Эти предложения изменяют атрибуты, изначально заданные
командой CREATE ROLE. Подробнее см. на
справочной странице CREATE ROLE.
new_name #Новое имя роли.
database_name #Имя базы данных, в которой должна быть установлена конфигурационная переменная.
configuration_parametervalue #
Установить значение по умолчанию на уровне сеанса для указанной конфигурационной
переменной для этой роли равным заданному значению. Если
value — это DEFAULT
или, что равносильно, используется RESET, то
настройка на уровне роли удаляется, так что роль будет
наследовать общесистемную настройку по умолчанию в новых сеансах. Используйте
RESET ALL для очистки всех настроек на уровне роли.
SET FROM CURRENT сохраняет текущее значение параметра
в сеансе как настройку на уровне роли.
Если указано IN DATABASE, конфигурационный
параметр устанавливается или удаляется только для данной роли и базы данных.
Настройки переменных на уровне роли вступают в силу только при входе в систему;
команды SET ROLE и
SET SESSION AUTHORIZATION
не обрабатывают настройки переменных на уровне роли.
См. SET и Глава 3.4 для получения дополнительной информации о допустимых именах параметров и их значениях.
Используйте 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 является расширением
Digital Q.DataBase.