PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 20. 数据库角色 | 下一页

# 20.2. 角色属性

一个数据库角色可以有一系列属性，这些属性定义他的权限，以及与客户认证系统的交互。

登陆权限

  只有具有`LOGIN`属性的角色才可以用作数据库连接的初始角色名。 一个带有`LOGIN`属性的角色可以认为是和"数据库用户"相同的事物。 要创建一个具有登录权限的角色，用下列之一：

      CREATE ROLE name LOGIN;
      CREATE USER name;

  除了`CREATE USER`默认赋予`LOGIN`之外，`CREATE USER` 等价于`CREATE ROLE`(默认不赋予`CREATE ROLE`)。

超级用户状态

  数据库超级用户超越所有权限检查。这是一个危险的权限，应该小心使用； 最好使用非超级用户完成你的大多数工作。要创建数据库超级用户， 用`CREATE ROLE `name` SUPERUSER`命令。 你必须用已经是超级用户的角色执行这条命令。

创建数据库

  角色要想创建数据库，必须明确给出权限(对于超级用户是例外，因为他们超越所有权限检查)。 要创建这样的角色，用`CREATE ROLE `name` CREATEDB`命令。

创建角色

  角色要想创建角色，必须明确给出权限(对于超级用户是例外，因为他们超越所有权限检查)。 要创建这样的角色，用`CREATE ROLE `name` CREATEROLE` 命令。一个带有`CREATEROLE`权限的角色也可以更改和删除其它角色， 以及给其它角色赋予或者撤销成员关系。不过，要创建、更改、删除一个超级用户角色的成员关系， 需要具有超级用户属性；只有`CREATEROLE`还不够。

启动复制

  角色要想启动流复制，必须明确给出权限(对于超级用户是例外，因为他们超越所有权限检查)。 用于流复制的角色必须总是拥有`LOGIN`权限。要创建这样的角色， 使用`CREATE ROLE `name` REPLICATION LOGIN`命令。

口令

  只有在客户认证方法要求与数据库建立连接必须使用口令的时候，口令才比较重要。 `password`和`md5`认证方法使用口令。数据库口令与操作系统口令是无关的。 在创建角色的时候可以这样声明一个口令：`CREATE ROLE `name` PASSWORD '`string`'`。

一个角色的属性可以在创建后用`ALTER ROLE` 修改。参考CREATE ROLE 和ALTER ROLE的手册获取细节。

> 提示: 创建一个具有`CREATEDB`和`CREATEROLE`权限， 但是并非超级用户的角色是一个很好的习惯，你可以使用这个角色进行所有日常的数据库和角色管理。 这个方法避免了以超级用户操作时，发生误操作导致的严重后果。

一个角色也可以为许多运行时配置设置针对其个人的缺省，那些配置在第 18 章里描述。 比如，如果出于某种原因你想在所有你做的连接中关闭索引扫描(不是个好主意)，你可以用：

    ALTER ROLE myname SET enable_indexscan TO off;

这样就会保存该设置(但是不是立即设置)。然后，在这个角色随后的连接中就好像在会话开始之后都立即 `SET enable_indexscan TO off`了一样。你也可以在会话中修改这个设置； 它只是缺省。要撤销任何这样的设置，使用`ALTER ROLE `rolename` RESET `varname``。 请注意，对那些没有`LOGIN`属性的角色，这些角色相关的缺省值几乎没什么用， 因为它们从来不会被调用。

上一页 | 起始页 | 下一页
数据库角色 | 上一级 | 角色成员