<< Back to man.ChinaUnix.net

ALTER USER

Name

ALTER USER -- 改变数据库用户帐号

Synopsis

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

这里 option 可以是:

    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

想进行属性更改的用户名字。

password

此帐号所使用的新口令。

CREATEDB
NOCREATEDB

这个子句定义该用户创建数据库的能力。 如果声明了CREATEDB,该用户可以创建她自己的数据库。 用NOCREATEDB将剥夺一个用户创建数据库的能力。 (如果该用户还是一个超级用户,那么这个设置没有实际的效果。)

CREATEUSER
NOCREATEUSER

这个子句决定一个用户能否创建新用户。 CREATEUSER 同样还令该用户成为超级用户,可以超越所有访问限制。

password

用于这个帐号的新口令。

ENCRYPTED
UNENCRYPTED

这些关键字控制口令是否以加密形式存在 pg_shadow 里。 (参阅 CREATE USER 获取这个选项的更多信息。)

abstime

该用户帐号口令的过期的日期(和可选的时间)。 要设置一个口令从不过期,可以用'infinity'

newname

用户的新名字。

parameter
value

把该用户特定的配置变量的会话缺省设置为给定的数值。 如果 valueDEFAULT 或者使用了等效的 RESET,那么删除用户相关的变量, 并且该用户将在新会话中继承缺省设置。使用 RESET ALL 清除所有用户相关设置。

参阅 SETSection 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';

更改一用户口令有效期, 声明其口令应该在用比UTC早一小时的时区记时的 2005 年 5 月 4 日正午失效

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 标准将用户的定义交给实现完成。

又见

CREATE USER, DROP USER, SET