pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
管理数据库用户及其权限在概念上类似于管理 Unix 操作系统的用户,但细节并不相同。
数据库用户在概念上与操作系统用户完全分离。实践中维持对应关系可能方便,但这不是必需的。数据库用户名在整个数据库集簇安装中是全局的(而不是每个数据库单独的)。要创建用户,使用 CREATE USER SQL 命令:
CREATE USER name
name 遵循 SQL 标识符的规则:要么是不带特殊字符的普通形式,要么用双引号括起。要移除现有的用户,使用类似的 DROP USER 命令。
为了方便,提供了 shell 脚本 createuser 和 dropuser 作为这些 SQL 命令的包装。
为了引导数据库系统,新初始化的系统总是包含一个预定义的用户。这个用户的固定 id 为 1,默认情况下(除非在运行 initdb 时更改)它与初始化该区域的操作系统用户同名(并且大概也被用作运行服务器的用户)。习惯上这个用户被命名为 postgres。要创建更多用户,你必须先以这个初始用户身份连接。
特定数据库连接所用的用户名由发起连接请求的客户端以应用特定的方式指明。例如,psql 程序用 -U 命令行选项指明要连接的用户。给定客户端连接可以以哪些数据库用户身份连接,由客户端认证设置决定,如第 4 章所述。(因此,客户端不一定只能以与其操作系统用户同名的用户连接,就像一个人的登录名不受其真实姓名约束一样。)
数据库用户可以拥有若干定义其权限并与客户端认证系统交互的属性。
数据库超级用户绕过所有权限检查。而且,只有超级用户才能创建新用户。要创建数据库超级用户,使用 CREATE USER name CREATEUSER。
必须显式给用户创建数据库的权限(超级用户除外,因为超级用户绕过所有权限检查)。要创建这样的用户,使用 CREATE USER name CREATEDB。
只有当客户端认证使用口令认证时,口令才有意义。数据库口令与操作系统口令是分开的。创建用户时用 CREATE USER name PASSWORD 'string' 指定口令。
A user's attributes can be modified after creation with ALTER USER. See the reference pages for CREATE USER and ALTER USER for details.
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。