PostgreSQL 8.2.3 中文文档
后退快退快进前进

ALTER ROLE

名称

ALTER ROLE -- 修改一个数据库角色

语法

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

这里的 option 可以是:

      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 RESET configuration_parameter

描述

ALTER ROLE 修改一个数据库角色的属性。

这个命令的第一个变体可以修改很多 CREATE ROLE 里面声明的角色属性,可以参阅相应手册页获取细节。所有可能的属性都有介绍,除了增加和删除成员关系的选项之外(使用 GRANTREVOKE 做这件事)。没有在命令里提到的属性维持它们以前的设置。数据库超级用户可以给任何角色改变任何设置。拥有 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 设置的属性,参阅该命令获取更多信息。

newname

角色的新名称

configuration_parameter
value

把该角色指定的配置参数缺省值设置为给定值。如果 valueDEFAULT 或等效的 RESET ,则删除特定角色的变量设置,这样该角色将在新的会话里继承系统范围的缺省值。使用 RESET ALL 清理所有角色相关的设置。

参阅 SET章17获取有关允许的参数名字和数值的更多信息。

注意

使用 CREATE ROLE 增加新角色,使用 DROP ROLE 删除旧角色。

ALTER ROLE 不能改变角色的成员关系。可以使用 GRANTREVOKE 做这个事情。

使用这个命令指定一个未加密的密码时必须小心,因为密码将以明文方式传送到服务器,并且可能被客户端命令历史记录或者被服务器日志记录。psql 包含一个可以用来安全修改角色密码的 \password 命令。

也可以把会话缺省与数据库绑定而不是与角色绑定;参阅 ALTER DATABASE 。如果有冲突,那么特定于角色的设置将覆盖特定于数据库的设置。

例子

改变一个角色的口令:

ALTER ROLE davide WITH PASSWORD 'hu8jmn3';

改变口令失效的日期,声明口令应该在 2015 年 5 月 4 日中午失效,时区比 UTC 早一个小时:

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 扩展。

又见

CREATE ROLE, DROP ROLE, SET

后退首页前进
ALTER OPERATOR CLASS上一级ALTER SCHEMA