# 22.2.
角色属性
数据库角色可以有许多属性来定义其权限并与客户端身份验证系统交互。
登录权限只有具有
登录属性可以用作数据库连接的初始角色名称。一个角色
登录属性可以被认为与“数据库用户”相同。
CREATE ROLE name LOGIN;
CREATE USER name;
要创建具有登录权限的角色,请使用:(
创建用户相当于
创建角色除了那个
创建用户包括
登录默认情况下,而
创建角色
超级用户状态数据库超级用户绕过所有权限检查,登录权限除外。这是一个危险的权限,不应随意使用;最好以非超级用户的身份完成大部分工作。要创建新的数据库超级用户,请使用创建角色 *
姓名* 超级用户
.您必须以已经是超级用户的角色执行此操作。
必须明确授予角色创建数据库的权限(超级用户除外,因为它们会绕过所有权限检查)。要创建这样的角色,请使用创建角色 *
姓名* 创建数据库
.
必须明确授予角色创建更多角色的权限(超级用户除外,因为它们会绕过所有权限检查)。要创建这样的角色,请使用创建角色 *
姓名* 创建者
.一个角色创造者
特权也可以更改和删除其他角色,以及授予或撤销其中的成员资格。但是,要创建、更改、删除或更改超级用户角色的成员资格,需要超级用户身份;创造者
是不够的。
必须明确授予角色启动流复制的权限(超级用户除外,因为它们绕过所有权限检查)。用于流式复制的角色必须具有登录
许可也是如此。要创建这样的角色,请使用创建角色 *
姓名* 复制登录
.
仅当客户端身份验证方法要求用户在连接到数据库时提供密码时,密码才有意义。这密码
和md5
身份验证方法使用密码。数据库密码与操作系统密码是分开的。在创建角色时指定密码创建角色 *
姓名* 密码 '*
细绳*'
.
角色的属性可以在创建后修改改变角色
.请参阅参考页面创建角色和改变角色有关详细信息的命令。
# 提示
创建一个具有创建数据库
和创造者
权限,但不是超级用户,然后使用此角色对数据库和角色进行所有日常管理。这种方法避免了以超级用户身份操作并不真正需要它的任务的危险。
对于在第 20 章.例如,如果出于某种原因您想在连接时禁用索引扫描(提示:这不是一个好主意),您可以使用:
ALTER ROLE myname SET enable_indexscan TO off;
这将保存设置(但不会立即设置)。在此角色的后续连接中,它看起来好像将 enable_indexscan 设置为关闭
已在会话开始前执行。您仍然可以在会话期间更改此设置;它只会是默认值。要删除特定于角色的默认设置,请使用改变角色 *
角色名* 重置 *
变量名*
.请注意,附加到角色的特定于角色的默认值没有登录
特权是相当无用的,因为它们永远不会被调用。