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

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

百科 / 连接参数 / 身份认证

passfile

指定用于存储密码的文件名(参见 第 32.16 节 )。默认为 ~/.pgpass ,或在Microsoft Windows上为 %APPDATA%\postgresql\pgpass.conf 。(如果此文件不存在,则不会报告错误。)

当前查看 PostgreSQL 18.6。

说明

指定用于存储密码的文件名(参见 第 32.16 节 )。默认为 ~/.pgpass ,或在Microsoft Windows上为 %APPDATA%\postgresql\pgpass.conf 。(如果此文件不存在,则不会报告错误。)

客户端库
libpq 18.6
手册定义
手册已记载
源码中的环境变量回退
PGPASSFILE
编译时回退表达式
NULL

用法

passfile

默认值解析与服务文件优先级

以下环境变量可用于选择连接参数的默认值,供 PQconnectdb 、 PQsetdbLogin 和 PQsetdb 在调用代码未直接指定参数值时使用。例如,这样可以避免在简单的客户端应用程序中硬编码数据库连接信息。

服务名称可以在每个用户的服务文件或系统范围的文件中定义。如果同一个服务名称存在于用户文件和系统文件中,则用户文件优先。默认情况下,每个用户的服务文件名为 ~/.pg_service.conf 。在Microsoft Windows上,它的名称为 %APPDATA%\postgresql\.pg_service.conf (其中 %APPDATA% 指用户配置文件夹中的应用数据子目录)。可以通过设置环境变量 PGSERVICEFILE 来指定不同的文件名。系统范围的文件名为 pg_service.conf 。默认情况下,在 PostgreSQL 安装的 etc 目录中寻找(使用 pg_config --sysconfdir 来准确识别此目录)。可以通过设置环境变量 PGSYSCONFDIR 来指定另一个目录,但不能指定不同的文件名。

从服务文件中获取的连接参数会与其他来源的参数合并。服务文件中的设置会覆盖相应的环境变量,而连接字符串中直接给出的值又会覆盖服务文件中的设置。例如,使用上述服务文件时,连接字符串 service=mydb port=5434 将使用主机 somehost 、端口 5434 、用户 admin ,以及由环境变量或内置默认值设置的其他参数。

环境变量证据

PGPASSFILE 的行为与 passfile 连接参数相同。

环境变量回退

变量手册记载的行为
PGPASSFILEPGPASSFILE 的行为与 passfile 连接参数相同。

手册定义

passfile

指定用于存储密码的文件名(参见第 32.16 节)。默认为~/.pgpass,或在Microsoft Windows上为%APPDATA%\postgresql\pgpass.conf。(如果此文件不存在,则不会报告错误。)

32.16. 密码文件

用户主目录中的.pgpass文件可保存密码,供连接需要密码且尚未通过其他方式指定密码时使用。在 Unix 系统上,该目录可由HOME环境变量指定;如果未定义该变量,则使用有效用户的主目录。在 Microsoft Windows 上,文件名为%APPDATA%\postgresql\pgpass.conf(其中%APPDATA%指用户配置文件中的应用数据子目录)。也可以通过连接参数passfile或环境变量PGPASSFILE指定要使用的密码文件。

该文件中的行应采用以下格式:

hostname:port:database:username:password

(可以复制上面这一行,并在行首加上#,在文件中加入提示注释。)前四个字段中的每一个都可以是字面值,或者是*,后者可以匹配任何内容。将使用与当前连接参数匹配的第一行中的密码字段。(因此,使用通配符时,应将更具体的条目放在前面。)如果条目需要包含:或\,请使用\转义该字符。主机名字段首先匹配已指定的host连接参数;否则匹配已指定的hostaddr参数。如果两者都未指定,则查找主机名localhost。在以下情况下也会查找主机名localhost:连接使用 Unix 域套接字,且host参数与libpq的默认套接字目录路径匹配。在备库中,数据库字段为replication时,匹配连接到主库的流复制连接。除此之外,数据库字段的用途有限,因为同一用户在同一数据库集簇的所有数据库中使用相同的密码。

在 Unix 系统上,密码文件的权限必须禁止所属组及其他用户的任何访问;可以用 chmod 0600 ~/.pgpass 这样的命令实现。如果权限没有这么严格,该文件将被忽略。在 Microsoft Windows 上,假定该文件存储在安全的目录中,因此不进行特殊的权限检查。

相关条目

文档与源码

来源构建
版本
18.6
构建
https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
来源指纹
ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8

版本比较

PostgreSQL 13 → 14: 属性变化。

以下差异保留原始字段名与英文源描述。

--- PostgreSQL 13
+++ PostgreSQL 14
@@ -1,7 +1,7 @@
 {
   "compiled_default_expression": "NULL",
   "default_evidence": [],
-  "definition": "Specifies the name of the file used to store passwords (see Section 33.15 ). Defaults to ~/.pgpass , or %APPDATA%\\postgresql\\pgpass.conf on Microsoft Windows. (No error is reported if this file does not exist.)",
+  "definition": "Specifies the name of the file used to store passwords (see Section 34.16 ). Defaults to ~/.pgpass , or %APPDATA%\\postgresql\\pgpass.conf on Microsoft Windows. (No error is reported if this file does not exist.)",
   "documented": true,
   "environment": "PGPASSFILE",
   "keyword": "passfile"

比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。

相关条目

导出 JSON · 返回连接参数 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。