ALTER USER
ALTER USER — 更改一个数据库用户帐号
大纲
ALTER USERusername[ [ WITH ]option[ ... ] ] whereoptioncan be: [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | VALID UNTIL 'abstime' ALTER USERusernameSETvariable{ TO | = } {value| DEFAULT } ALTER USERusernameRESETvariable
描述
ALTER USER 用于更改
PostgreSQL
用户账户的属性。命令中未提及的属性保持其原有设置。
语法中的第一种变体更改某些全局用户权限和认证设置。(细节见下文。)只有数据库超级用户才能用此命令更改权限和口令过期。普通用户只能更改自己的口令。
第二种和第三种变体更改用户对指定配置变量的会话默认值。之后每当该用户启动新会话时,指定的值就成为会话默认值,覆盖
postgresql.conf
中存在的或从
postmaster
接收到的任何设置。普通用户可以更改自己的会话默认值。超级用户可以更改任何人的会话默认值。
参数
username要更改其属性的用户名。
password此帐号要使用的新密码。
ENCRYPTEDUNENCRYPTED这些关键字控制密码是否以加密形式存储在
pg_shadow中。(有关这一选择的更多信息,参见CREATE USER。)CREATEDBNOCREATEDB这些子句定义用户创建数据库的能力。如果指定了
CREATEDB,被定义的用户将被允许创建自己的数据库。使用NOCREATEDB将拒绝用户创建数据库的能力。CREATEUSERNOCREATEUSER这些子句决定是否允许用户自己创建新用户。此选项还会把该用户变为可以越过所有访问限制的超级用户。
abstime该用户密码将过期失效的日期(以及可选的时间)。
variablevalue把该用户对指定配置变量的会话默认值设为给定值。如果
value为DEFAULT,或等价地使用了RESET,则移除该用户专有的变量设置,用户在新会话中将继承系统范围的默认设置。使用RESET ALL可清除所有设置。有关允许的变量名和值的更多信息,请参见SET和管理员指南。
诊断
ALTER USER更改成功时返回的消息。
ERROR: ALTER USER: user "username" does not exist如果数据库不认识指定的用户,则返回此错误消息。
注意
使用CREATE USER添加新用户,使用DROP USER删除用户。
ALTER USER不能更改用户的组成员资格。要做到这一点,请使用ALTER GROUP。
使用ALTER DATABASE,也可以把会话默认值绑定到特定数据库而不是用户。
示例
更改用户口令:
ALTER USER davide WITH PASSWORD 'hu8jmn3';
更改用户的有效期限(valid until)日期:
ALTER USER manuel VALID UNTIL 'Jan 31 2030';
更改用户的有效期限日期,指定他的授权应在 1998 年 5 月 4 日正午、使用比 UTC 早一小时的时区过期:
ALTER USER chris VALID UNTIL 'May 4 12:00:00 1998 +1';
授予用户创建其他用户和新数据库的能力:
ALTER USER miriam CREATEUSER CREATEDB;
兼容性
ALTER USER语句是
PostgreSQL的一种扩展。SQL 标准将用户的定义交由具体实现决定。