Chapter 7. 数据库用户和权限

Table of Contents
7.1. 数据库用户
7.2.
7.3. 权限
7.4. 函数和触发器

管理数据库用户和他们的权限概念上类似于 Unix 操作系统, 但是还是不完全一样,所以要解释.

7.1. 数据库用户

数据库用户从概念上与操作系统用户是完全无关的. 在实际使用中把它们对应起来可能比较方便,但不是必须的. 数据库用户名在整个数据库集群中是全局的(而不是每个库不同). 要创建一个用户,使用 SQL 命令 CREATE USER

CREATE USER name
name 遵循 SQL 标识的规则: 要么完全没有特殊字符,要么用双引号引起. 要删除一个现有用户,使用类似的命令 DROP USER

为了方便,shell脚本createuserdropuser 封装了这些 SQL 命令.

为了能初创数据库系统,新建立的数据库总是包含一个预定义的用户. 这个用户将和初始化该数据区的用户有相同的名称(并且也可以预料 到是运行服务器的用户).因此,初始用户“postgres” 总是存在.为了创建更多用户,你必须首先以这个初始用户身份联接.

使用特定数据库联接的用户名是由初始化联接请求的应用声明的, 而且其风格就是该应用的风格.比如,psql 程序使用-U命令行选项声明它代表的进行联接 的用户.一个客户端联接可以用来联接的数据库用户集合是由客户 认证设置决定的,在 Chapter 4 里面有解释.(因此,一个客户端并不局限于以它的操作系统用户 同名的用户进行联接,就象你登录系统的名称不一定要是你的真实 名称一样.)

7.1.1. 用户属性

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

superuser(超级用户)

数据库超级用户超越所有权限检查.同样,只有超级用户才能 创建新的用户.要创建数据库超级用户,用 CREATE USER name CREATEUSER

database creation(创建数据库)

用户要想创建数据库,必须明确给出权限(对于超级用户是例外,因为 他们超越所有权限检查).要创建这样的用户,用 CREATE USER name CREATEDB

password(口令)

只有在对客户认证使用了口令认证后,口令才比较重要. 数据库口令与操作系统口令是无关的.在创建用户的时候 声明一个口令是这样: CREATE USER name WITH PASSWORD 'string'

参考 CREATE USERALTER USER 的手册获取细节.