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