34.15. 密码文件

如果连接需要密码(否则未指定密码),则用户主目录中的文件.pgpass可以包含要使用的密码。在 Microsoft Windows 上,文件名为%APPDATA%\postgresql\pgpass.conf(其中%APPDATA%表示用户配置文件中的 Application Data 子目录)。或者,可以使用连接参数passfile或环境变量PGPASSFILE指定密码文件。

该文件应包含以下格式的行:

hostname:port:database:username:password

(您可以通过复制上面的行并在其前面加上#来向该文件添加提醒 Comments.)前四个字段中的每个字段都可以是与任何内容匹配的 Literals 值或*。将使用第一行中与当前连接参数匹配的密码字段。 (因此,在使用通配符时,应将更具体的条目放在首位.)如果条目需要包含:\,请使用\对此字符进行转义。主机名字段与host连接参数(如果已指定)相匹配,否则与hostaddr参数(如果已指定)相匹配;如果都未给出,则搜索主机名localhost。当连接是 Unix 域套接字连接且host参数与 libpq 的默认套接字目录路径匹配时,也会搜索主机名localhost。在备用服务器中,数据库字段replication匹配与主服务器构建的流复制连接。否则,数据库字段的用途有限,因为用户对同一集群中的所有数据库使用相同的密码。

在 Unix 系统上,密码文件的权限必须禁止对 world 或 group 的任何访问。通过诸如chmod 0600 ~/.pgpass之类的命令来实现。如果权限不严格,则将忽略该文件。在 Microsoft Windows 上,假定文件存储在安全的目录中,因此不会进行特殊权限检查。