pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
每个数据库集簇都包含一组数据库用户。这些用户与运行服务器的操作系统所管理的用户是相互独立的。用户拥有数据库对象(例如表),并且可以把这些对象上的权限赋予其他用户,以控制谁能访问哪些对象。
本章描述如何创建和管理用户,并介绍权限系统。关于各种数据库对象类型和权限效果的更多信息,见第 5 章。
数据库用户在概念上与操作系统用户完全分离。在实践中,维持两者之间的对应关系可能比较方便,但这并非必需。数据库用户名在整个数据库集簇安装中是全局的(而非每个数据库各自独立)。要创建用户,请使用 CREATE USER SQL 命令:
CREATE USER name;
name 遵循 SQL 标识符规则:要么不加修饰且不含特殊字符,要么用双引号括起。要移除现有用户,请使用类似的 DROP USER 命令:
DROP USER name;
为了方便,提供了createuser和dropuser程序,作为这些 SQL 命令的包装器,可以从 shell 命令行调用:
createusernamedropusername
要确定现有用户的集合,请查看 pg_user 系统目录,例如
SELECT usename FROM pg_user;
使用 psql 程序的 \du 元命令也可以列出现有用户。
为了完成数据库系统的初始引导,一个刚初始化的系统总会包含一个预定义用户。该用户将拥有固定的 ID 1,并且默认情况下(除非在运行initdb时另行指定)它与初始化数据库集簇的操作系统用户同名。这个用户通常命名为postgres。要创建更多用户,必须先以这个初始用户建立连接。
每个到数据库服务器的连接中恰好只有一个用户身份处于活动状态。某个数据库连接要使用的用户名,由发起连接请求的客户端以应用特定的方式指明。例如,psql程序使用-U命令行选项来指明要以哪个用户连接。很多应用默认假定使用当前操作系统用户的名字(包括createuser和psql)。因此,在这两组用户之间维护命名对应关系通常比较方便。
某个客户端连接能够以哪些数据库用户进行连接,由客户端认证设置决定,如第 19 章中所述。(因此,客户端并不一定限于只能以与其操作系统用户同名的用户连接,正如一个人的登录名不必与其真实姓名一致。)由于用户身份决定了已连接客户端可用的权限集合,所以在设置多用户环境时,仔细配置这一点非常重要。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。