# 改变角色

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

# 描述

改变角色更改PostgreSQL角色的属性。

大纲中列出的该命令的第一个变体可以更改中可以指定的许多角色属性创建角色(涵盖了所有可能的属性,但没有添加或删除成员身份的选项;请使用授予撤销为此。)命令中未提及的属性将保留其以前的设置。数据库超级用户可以更改任何角色的任何设置。角色创建角色特权可以更改这些设置中的任何一个,除了超级用户,复制绕过RLS; 但仅适用于非超级用户和非复制角色。普通角色只能更改自己的密码。

第二个变体更改角色的名称。数据库超级用户可以重命名任何角色。角色创建角色特权可以重命名非超级用户角色。无法重命名当前会话用户。(如果需要,请以其他用户身份连接。)因为MD5-加密密码将角色名称用作加密盐,如果密码无效,重命名角色将清除其密码MD5-加密的。

其余的变量会更改角色的配置变量会话默认值,无论是针对所有数据库,还是在在数据库中子句,仅用于命名数据库中的会话。如果全部的而不是指定角色名称,这将更改所有角色的设置。使用全部的具有在数据库中实际上与使用命令相同改变数据库。。。设置.

每当角色随后启动一个新会话时,指定的值将成为会话默认值,覆盖会话中存在的任何设置postgresql。形态或者已经收到博士后命令行。这只发生在登录时;执行设定角色设置会话授权不会导致设置新的配置值。为所有数据库设置的设置由附加到角色的特定于数据库的设置覆盖。特定数据库或特定角色的设置会覆盖所有角色的设置。

超级用户可以更改任何人的会话默认值。角色创建角色特权可以更改非超级用户角色的默认值。普通角色只能为自己设置默认值。某些配置变量不能以这种方式设置,或者只能在超级用户发出命令时设置。只有超级用户才能更改所有数据库中所有角色的设置。

# 参数

名称

要更改其属性的角色的名称。

当前职位
当前用户

更改当前用户,而不是明确标识的角色。

会话用户

更改当前会话用户,而不是明确标识的角色。

超级用户
无超级用户
CREATEDB
NOCREATEDB
创建角色
无创造角色
继承
诺因赫里特
登录
诺洛金
复制
去应用
绕过RLS
无名小卒
连接限制 康纳极限
[ 加密的 ] 暗语 '暗语'
密码为空
有效期至 '时间戳'

这些子句改变了最初由创建角色.有关更多信息,请参阅创建角色参考页。

新名字

角色的新名称。

数据库名称

应在其中设置配置变量的数据库的名称。

配置参数
价值

将指定配置参数的此角色的会话默认值设置为给定值。如果*价值*是违约或者,相当于,重置使用时,将删除特定于角色的变量设置,因此该角色将在新会话中继承系统范围内的默认设置。使用全部重置清除所有特定于角色的设置。从当前设置将参数的会话当前值保存为角色特定值。如果在数据库中则仅为给定角色和数据库设置或删除配置参数。

特定于角色的变量设置仅在登录时生效;设定角色设置会话授权不要处理特定于角色的变量设置。

看见设置第20章有关允许的参数名称和值的详细信息。

# 笔记

使用创建角色添加新角色,以及放弃角色删除一个角色。

改变角色无法更改角色的成员身份。使用授予撤销这样做。

使用此命令指定未加密密码时必须小心。密码将以明文形式传输到服务器,也可能记录在客户端的命令历史记录或服务器日志中。psql包含一个命令\密码可用于更改角色的密码,而无需公开明文密码。

还可以将会话默认值与特定数据库而不是角色绑定;看见改变数据库。如果存在冲突,则特定于数据库角色的设置将覆盖特定于角色的设置,进而覆盖特定于数据库的设置。

# 例子

更改角色的密码:

ALTER ROLE davide WITH PASSWORD 'hu8jmn3';

删除角色的密码:

ALTER ROLE davide WITH PASSWORD NULL;

更改密码到期日期,指定密码应在2015年5月4日中午到期,使用UTC前一小时的时区:

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

使密码永远有效:

ALTER ROLE fred VALID UNTIL 'infinity';

赋予角色创建其他角色和新数据库的能力:

ALTER ROLE miriam CREATEROLE CREATEDB;

为角色指定维修_工作_记忆参数:

ALTER ROLE worker_bee SET maintenance_work_mem = 100000;

为角色提供非默认的、特定于数据库的客户_闵_信息参数:

ALTER ROLE fred IN DATABASE devel SET client_min_messages = DEBUG;

# 兼容性

这个改变角色语句是PostgreSQL的扩展。

# 另见

创建角色, 放弃角色, 改变数据库, 设置