↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

第 4 章 数据库用户和权限

每个数据库集簇都包含一组数据库用户。这些用户与运行服务器的操作系统所管理的用户是相互独立的。用户拥有数据库对象(例如表),并且可以把这些对象上的权限赋予其他用户,以控制谁能访问哪些对象。

本章描述如何创建和管理用户,并介绍 权限系统。关于各种 类型的数据库对象和权限 影响的更多信息,请见 PostgreSQL 7.3.21 用户指南。

4.1. 数据库用户 #

数据库用户在概念上与操作系统用户完全 分离。实践中维持对应关系可能方便, 但这不是必需的。数据库用户名在整个数据库集簇安装中是全局的(而不是 每个数据库单独的)。要创建用户,使用 CREATE USER SQL 命令:

CREATE USER name

name 遵循 SQL 标识符的规则:要么是不带特殊字符的普通形式, 要么用双引号括起。要移除现有的用户,使用类似的 DROP USER 命令:

DROP USER name

为方便起见,提供了 createuser 和 dropuser 程序作为这些 SQL 命令的包装, 可以从 shell 命令行调用:

createuser name
dropuser name

为了引导 数据库系统,新初始化的 系统总是包含一个预定义的 用户。这个用户的固定 ID 为 1,默认情况下(除非在运行 initdb 时更改)它与初始化数据库 集群的操作系统 用户同名。习惯上这个用户被命名为 postgres。要创建更多 用户,你必须先以这个初始 用户身份连接。

与数据库服务器的一个连接 恰好只有一个活跃的用户 身份。特定数据库 连接所用的用户名由发起 连接请求的客户端以应用 特定的方式指明。例如, psql 程序用 -U 命令行选项指明要连接的 用户。许多应用默认假定当前 操作系统用户 的名字(包括 createuser 和 psql)。因此,在两 组用户之间维持 命名对应关系会很 方便。

给定的客户端连接可以以哪些 数据库用户身份连接,由客户端认证 设置决定,如 第 6 章 所述。(因此, 客户端不一定只能以与其操作系统 用户同名的用户连接,就像一个人的 登录名不受其真实姓名约束 一样。)由于用户 身份决定了已连接 客户端可用的权限集,在建立 多用户环境时仔细配置这一点 很重要。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。