↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1
历史版本。 PostgreSQL 8.3 已结束支持。 请参阅 当前版本手册.

ALTER ROLE

ALTER ROLE — 更改数据库角色

大纲

ALTER ROLE name [ [ WITH ] option [ ... ] ]

where option can be:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | CREATEUSER | NOCREATEUSER
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'timestamp'

ALTER ROLE name RENAME TO newname

ALTER ROLE name SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER ROLE name SET configuration_parameter FROM CURRENT
ALTER ROLE name RESET configuration_parameter
ALTER ROLE name RESET ALL

描述

ALTER ROLE更改 PostgreSQL角色的属性。

概要中列出的此命令的第一种形式可以更改CREATE ROLE中可指定的许多角色属性。(涵盖了所有可能的属性,但没有用于添加或移除成员资格的选项;请使用GRANT和REVOKE完成此操作。)命令中未提及的属性保留其以前的设置。数据库超级用户可以更改任何角色的任何这些设置。拥有CREATEROLE权限的角色可以更改任何这些设置,但只能针对非超级用户角色。普通角色只能更改自己的密码。

第二种形式更改角色的名称。数据库超级用户可以重命名任何角色。拥有CREATEROLE权限的角色可以重命名非超级用户角色。当前会话用户不能被重命名。(如果需要这样做,请以其他用户连接。)由于MD5加密的密码使用角色名作为密码学盐,重命名角色会清除其密码(如果密码使用MD5加密)。

其余的变体更改角色的某个配置变量的会话默认值。每当该角色随后启动新会话时,指定的值就成为会话默认值,覆盖 postgresql.conf 中的设置或从 postgres 命令行接收的设置。(对于没有 LOGIN权限的角色,会话默认值不起作用。)普通角色可以更改自己的会话默认值。超级用户可以更改任何人的会话默认值。具有 CREATEROLE权限的角色可以更改非超级用户角色的默认值。某些配置变量不能用这种方式设置,或者只有超级用户发出命令时才能设置。

参数

name

将要修改其属性的角色名称。

SUPERUSER
NOSUPERUSER
CREATEDB
NOCREATEDB
CREATEROLE
NOCREATEROLE
CREATEUSER
NOCREATEUSER
INHERIT
NOINHERIT
LOGIN
NOLOGIN
CONNECTION LIMIT connlimit
PASSWORD password
ENCRYPTED
UNENCRYPTED
VALID UNTIL 'timestamp'

这些子句更改最初由CREATE ROLE设置的属性。更多信息请参见CREATE ROLE参考页。

newname

角色的新名称。

configuration_parameter
value

将该角色在指定配置参数上的会话默认值设为给定值。如果 value是DEFAULT,或者等效地使用了RESET,则会移除角色特定变量设置,因此该角色在新会话中将继承系统范围的默认设置。使用 RESET ALL可清除所有角色特定设置。SET FROM CURRENT会将该参数在当前会话中的值保存为角色特定值。

关于允许的参数名称和值详见SET和第 18 章。

注解

使用CREATE ROLE添加新角色,使用DROP ROLE移除角色。

ALTER ROLE不能更改角色的成员资格。请使用GRANT和REVOKE完成此操作。

用这个命令指定未加密密码时必须加以注意。密码将以明文形式传输到服务器,并且也可能被记录在客户端命令历史或服务器日志中。psql包含一个命令\password,可用于更改角色的密码而不暴露明文密码。

也可以把会话默认值绑定到特定数据库,而不是角色;详见ALTER DATABASE。如果发生冲突,角色特定设置会覆盖数据库特定设置。

示例

更改角色的密码:

ALTER ROLE davide WITH PASSWORD 'hu8jmn3';

更改密码的失效日期,并指定该密码应在比 UTC快 1 小时的时区中,于 2015 年 5 月 4 日中午失效:

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;

兼容性

ALTER ROLE语句是 PostgreSQL的扩展。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.