ALTER USER(7)

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

SYNOPSIS

ALTER USER name [ [ WITH ] option [ ... ] ]
where option can be:
    [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | CREATEDB | NOCREATEDB
    | CREATEUSER | NOCREATEUSER
    | VALID UNTIL 'abstime'
ALTER USER name RENAME TO newname
ALTER USER name SET parameter { TO | = } { value | DEFAULT }
ALTER USER name RESET parameter

DESCRIPTION 描述

ALTER USER 用于更改用户的 PostgreSQL 帐号的属性。 没有在该命令中出现的属性保持原值。

 这条命令模式中的第一个变种修改某些全局用户权限和认证设置。 （见下文获取细节。）只有数据库超级用户可以用这条命令改变这些权限和使口令失效。普通用户只能修改它们自己的口令。

 第二个变种改变用户的名字。只有数据库超级用户才能重新命名用户帐户。 当前会话用户不能重命名。（如果想这么干，先用另外一个用户账号连接。）

 第三和第四个变种修改用户会话的特定配置变量的缺省值。 当该用户随后启动一个新的会话时，声明的数值将成为会话的缺省，覆盖 任何出现在 postgresql.conf 里，或者从 postmaster 命令行接收到的设置。 普通用户可以修改它们自己的会话缺省。超级用户可以修改任何用户的缺省。

PARAMETERS 参数

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

password
     此帐号所使用的新口令。

ENCRYPTED

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

CREATEDB

NOCREATEDB
     这个子句定义该用户创建数据库的能力。 如果声明了CREATEDB，该用户可以创建她自己的数据库。 用NOCREATEDB将剥夺一个用户创建数据库的能力。

CREATEUSER

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

abstime
     该用户帐号口令的过期的日期（和可选的时间）。 要设置一个口令从不过期，可以用'infinity'。

newname
     用户的新名字。

parameter

value
     把该用户特定的配置变量的会话缺省设置为给定的数值。 如果 value 为 DEFAULT 或者使用了等效的 RESET，那么删除用户相关的变量， 并且该用户将在新会话中继承缺省设置。使用 RESET ALL 清除所有设置。
     参阅 SET [set(7)] 和 Section 16.4 ``Run-time Configuration'' 获取有关可用变量和数值的更多信息。

NOTES 注意

 使用 CREATE USER [create_user(7)] 创建新用户和 DROP USER [drop_user(7)] 删除用户。

ALTER USER 无法改变一个用户的组的成员性。 用 ALTER GROUP [alter_group(7)] 实现这个目地。

 使用 ALTER DATABASE [alter_database(7)]，我们还可能把一个会话缺省和某个数据库绑定起来，而不是和某个用户绑定。

EXAMPLES 例子

 更改一用户口令：

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;

COMPATIBILITY 兼容性

ALTER USER 语句是 PostgreSQL 扩展。SQL 标准将用户的定义交给实现完成。

SEE ALSO 参见
CREATE USER [create_user(7)], DROP USER [drop_user(l)], SET [set(l)]

译者
Postgresql 中文网站 何伟平 <laser@pgsqldb.org>