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

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.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

第 17 章 数据库用户和权限

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

本章描述如何创建和管理用户,并介绍权限系统。关于各种数据库对象类型和权限效果的更多信息,见第 5 章。

17.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)。因此,在这两组用户之间维护命名对应关系通常比较方便。

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

提交更正

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