PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

32.16. 口令密码文件 #

用户主目录中的文件 .pgpass 可以包含在连接需要密码时 (并且没有以其他方式指定密码时) 要使用的密码。 在 Unix 系统上, 这个目录可以用 HOME 环境变量指定, 如果未定义, 则使用有效用户的主目录。 在 Microsoft Windows 上, 该文件被命名为 %APPDATA%\postgresql\pgpass.conf (其中 %APPDATA% 指用户配置文件中的 Application Data 子目录)。 另外, 要使用的密码文件可以用连接参数 passfile 或环境变量 PGPASSFILE 来指定。

这个文件应当包含以下格式的行:

hostname:port:database:username:password

(你可以通过复制上面这一行并在它前面加上 # 来为该文件添加一条提醒注释。) 前四个字段中的每一个都可以是一个字面值, 或者是能匹配任何东西的 *。 第一条与当前连接参数相匹配的行的密码字段会被使用。 (因此, 当你使用通配符时, 请把更具体的条目放在前面。) 如果一个条目需要包含 : 或 \, 请用 \ 转义这个字符。 如果指定了 host 连接参数, 主机名字段会与它匹配; 否则如果指定了 hostaddr 参数, 则与它匹配; 如果两者都没有给出, 则查找主机名 localhost。 当连接是一条 Unix 域套接字连接, 并且 host 参数与 libpq 的默认套接字目录路径相匹配时, 也会查找主机名 localhost。 在一台备用服务器上, 值为 replication 的数据库字段会与到主服务器的流复制连接相匹配。 除此之外数据库字段的用途有限, 因为用户在同一个集群中对所有数据库都拥有相同的密码。

在 Unix 系统上, 密码文件的权限必须禁止任何人或组访问; 通过诸如 chmod 0600 ~/.pgpass 的命令来做到这一点。 如果权限没有这么严格, 该文件会被忽略。 在 Microsoft Windows 上, 假定该文件被存储在一个安全的目录中, 因此不做特殊的权限检查。