添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

ALTER ROLE

描述

ALTER ROLE 修改一个 PostgreSQL 角色的属性。

这个命令的第一种形式可以修改很多 CREATE ROLE 里面声明的角色属性。 (除了增加和删除成员关系的选项之外,所有可能的属性都有介绍;使用 GRANT REVOKE 可以实现前述两件事。) 没有在命令里提到的属性维持它们以前的设置。数据库超级用户可以给任何角色改变任何设置。 拥有 CREATEROLE 权限的角色可以修改任意这些设置,但是只能给非超级用户和非复制用户角色设置。 普通的角色只能修改它们自己的口令。

第二种形式可以修改角色的名称。数据库超级用户可以修改任何角色的名称。 拥有 CREATEROLE 权限的角色可以给非超级用户角色进行重命名。 当前会话的用户的角色是不能改名的。(如果一定需要这么做,则必须以另外一个用户的身份连接系统。) 因为 MD5 加密的口令使用角色名字作为加密的盐粒,所以, 如果口令是 MD5 加密的,那么给一个角色改名会清空其口令。

其他的形式更改一个角色的会话配置参数默认值,该值要么针对所有的数据库, 要么使用 IN DATABASE 选项,仅针对指定的数据库。 如果是未指定角色名称而是使用了 ALL 选项,则所有角色的相关参数都会更改。 当同时使用 ALL IN DATABASE 选项时,就等同于使用 ALTER DATABASE ... SET ...

当角色随后开启一个新会话,指定的值变成了会话的默认值,这些参数值会覆盖任何 postgresql.conf 中的设置或者从 postgres 命令行接收到的参数值。 这仅在登录时发生;执行 SET ROLE 或者 SET SESSION AUTHORIZATION 不会引起新的配置值设置。 为所有数据库所设定的参数会被附加到一个角色上的特定数据库的参数所覆盖。为指定数据库或指定角色所设定的参数会覆盖为所有角色设定的参数。

超级用户可以更改任何一个会话默认值。有 CREATEROLE 权限的角色可以为非超级用户角色更改默认值。 普通的角色只能为自己设置默认值。 某些配置变量不能这样设置,或者只要超级用户才能执行。 只有超级用户才能为所有数据库中的所有角色更改参数设置。

参数

name

需要修改属性的角色的名称。

SUPERUSER
NOSUPERUSER
CREATEDB
NOCREATEDB
CREATEROLE
NOCREATEROLE
CREATEUSER
NOCREATEUSER
INHERIT
NOINHERIT
LOGIN
NOLOGIN
REPLICATION
NOREPLICATION
CONNECTION LIMIT connlimit
PASSWORD password
ENCRYPTED
UNENCRYPTED
VALID UNTIL ' timestamp '

这些选项修改由 CREATE ROLE 初始设置的属性。 要获取更多详细信息,请参阅 CREATE ROLE 参考页。

new_name

角色的新名字。

database_name

要设置配置变量的数据库的名称。

configuration_parameter
value

把该角色指定的参数缺省值设置为给定值。如果 value DEFAULT 或是相当于使用 RESET , 指定角色的参数值会被清除,这样该角色将在新的会话里继承系统级的参数缺省值。 使用 RESET ALL 会清除所有角色相关的设置。 使用 SET FROM CURRENT 会将会话的当前参数值保存为特定角色的缺省参数值。 如果使用了 IN DATABASE 选项,则仅仅指定的角色和数据库可以设置或者清除相关参数。

特定角色的参数设置仅仅在登录时起效; SET ROLE SET SESSION AUTHORIZATION 不能进行特定角色的参数设置。

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

注意

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

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

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

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

<