|
Chapter 7. 数据库用户和权限管理数据库用户和他们的权限概念上类似于管理 Unix 操作系统, 但是细节不完全一样. 7.1. 数据库用户数据库用户从概念上与操作系统用户是完全无关的. 在实际使用中把它们对应起来可能比较方便,但不是必须的. 数据库用户名在整个数据库集群中是全局的(而不是每个库不同). 要创建一个用户,使用 SQL 命令 CREATE USER : CREATE USER name name 遵循 SQL 标识的规则: 要么完全没有特殊字符,要么用双引号引起. 要删除一个现有用户,使用类似的命令 DROP USER . 为了方便,shell 脚本 createuser 和 dropuser 提供了对了这些 SQL 命令的封装. 为了能初创数据库系统,新建立的数据库总是包含一个预定义的用户. 这个用户将有固定的 id 1,并且缺省时(除非在运行 initdb 时更改过)他将和 初始化该数据区的用户有相同的名称(并且也可以预料 到会是运行服务器的用户).通常,这个用户叫 postgres . 为了创建更多用户,你必须首先以这个初始用户身份联接. 使用特定数据库联接的用户名是由初始化联接请求的应用声明的, 而且其风格就是该应用的风格.比如, psql 程序使用 -U 命令行选项声明它代表的进行联接 的用户.一个客户端联接可以用来联接的数据库用户集合是由客户 认证设置决定的,在 Chapter 4 里面有解释.(因此,一个客户端并不局限于以它的操作系统用户 同名的用户进行联接,就象你登录系统的名称不一定要是你的真实 名称一样.) 7.1.1. 用户属性一个数据库用户可以有一系列属性,这些属性定义他的权限,以及与 客户认证系统的交互.
一个用户的属性可以在创建后用 ALTER USER 修改. 参考 CREATE USER 和 ALTER USER 的手册获取细节. |