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

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 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本。 PostgreSQL 8.0 已结束支持。 请参阅 当前版本手册.

ALTER USER

ALTER USER — 更改一个数据库用户帐号

大纲

ALTER USER name [ [ WITH ] option [ ... ] ]

where option can be:

    CREATEDB | NOCREATEDB
    | CREATEUSER | NOCREATEUSER
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'abstime'

ALTER USER name RENAME TO newname

ALTER USER name SET parameter { TO | = } { value | DEFAULT }
ALTER USER name RESET parameter

描述

ALTER USER更改一个 PostgreSQL用户帐号的属性。命令中未提及的属性保留其原有设置。

概要中列出的第一种变体用于更改某些逐用户的权限和认证设置。(细节见下文。)数据库超级用户可以更改任何用户的任何设置。普通用户只能更改自己的密码。

第二种变体更改用户的名称。只有数据库超级用户才能重命名用户帐号。当前会话用户不能被重命名。(如果需要这样做,请以其他用户身份连接。)因为MD5加密的密码把用户名用作加密盐值,重命名用户会清除其MD5密码。

第三种和第四种变体更改用户在指定配置变量上的会话默认值。每当该用户随后启动新会话时,指定的值就成为会话默认值,覆盖postgresql.conf中存在的设置或从 postmaster命令行接收的设置。普通用户可以更改自己的会话默认值。超级用户可以更改任何人的会话默认值。某些变量不能用这种方式设置,或者只能由超级用户设置。

参数

name

要更改其属性的用户名。

CREATEDB
NOCREATEDB

这些子句定义用户创建数据库的能力。如果指定CREATEDB,将允许该用户创建他自己的数据库。指定NOCREATEDB 将禁止该用户创建数据库。(如果该用户同时是超级用户,那么这个设置没有实际效果。)

CREATEUSER
NOCREATEUSER

这些子句决定是否允许用户自己创建新用户。CREATEUSER 还会把该用户变为超级用户,超级用户可以越过所有访问限制。

password

此帐号要使用的新密码。

ENCRYPTED
UNENCRYPTED

这些关键字控制密码是否以加密形式存储在pg_shadow中。(有关这一选择的更多信息,参见CREATE USER。)

abstime

该用户密码将过期失效的日期(以及可选的时间)。要让密码永不过期,请使用'infinity'。

newname

该用户的新名称。

parameter
value

将该用户在指定配置参数上的会话默认值设为给定值。如果 value为DEFAULT,或者等价地使用了RESET,则移除该用户特定的变量设置,这样该用户在新会话中将继承系统范围的默认设置。使用RESET ALL可清除所有用户特定的设置。

有关允许的参数名和值的更多信息,请参见SET和第 16.4 节。

注解

使用CREATE USER添加新用户,使用DROP USER删除用户。

ALTER USER不能更改用户的组成员资格。要做到这一点,请使用ALTER GROUP。

VALID UNTIL子句只为密码定义过期时间,而不是为用户帐号本身定义过期时间。特别是,使用非基于密码的认证方式登录时,不会强制执行该过期时间。

也可以把会话默认值绑定到特定数据库而不是用户;参见ALTER DATABASE。如果两者冲突,用户特定的设置会覆盖数据库特定的设置。

示例

更改用户的密码:

ALTER USER davide WITH PASSWORD 'hu8jmn3';

更改用户密码的过期日期:

ALTER USER manuel VALID UNTIL 'Jan 31 2030';

更改密码过期日期,指定密码应在 2005 年 5 月 4 日中午过期,使用比 UTC 早一小时的时区:

ALTER USER chris VALID UNTIL 'May 4 12:00:00 2005 +1';

让密码永远有效:

ALTER USER fred VALID UNTIL 'infinity';

授予用户创建其他用户和新数据库的能力:

ALTER USER miriam CREATEUSER CREATEDB;

兼容性

ALTER USER语句是 PostgreSQL的一种扩展。SQL 标准将用户的定义交由具体实现决定。

报告文档问题

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