33.15. 密码文件 #
用户主目录中的.pgpass 文件可保存密码,供连接需要密码且尚未通过其他方式指定密码时使用。在 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 上,假定该文件存储在安全的目录中,因此不进行特殊的权限检查。