用户主目录中的文件 .pgpass 可以
包含在连接需要密码时使用的密码(并且没有其他密码被指定)。在 Unix 系统中,目录可以通过 HOME 环境变量指定,或者如果未定义,则为有效用户的主目录。在 Microsoft Windows 中,该文件名为 %APPDATA%\postgresql\pgpass.conf(其中 %APPDATA% 指的是用户配置文件中的应用程序数据子目录)。
另外,可以使用连接参数 passfile
或环境变量 PGPASSFILE 指定要使用的密码文件。
这个文件应该包含下列格式的行:
hostname:port:database:username:password
(你可以向该文件增加一个提醒:把上面的行复制到该文件并且在前面加上#)。前四个域的每一个都可以是文字值或者匹配任何东西的*。第一个匹配当前连接参数的行中的密码域将被使用(因此,在使用通配符时把更特殊的项放在前面)。如果一个条目需要包含:或者\,用\对该字符转义。如果指定了host连接参数,主机名字段会被匹配到host,否则如果指定了hostaddr参数则匹配到hostaddr,如果两者都没有给出,则会搜索主机名localhost。当连接是一个Unix域套接字连接并且host参数匹配libpq的默认套接字目录路径时,也会搜索主机名localhost。在一台后备服务器上,值为replication的数据库字段匹配连接到主服务器的流复制连接。否则数据库字段的用途有限,因为用户对同一个集簇中的所有数据库都有相同的密码。
在 Unix 系统上,密码文件上的权限必须不允许所有人或组内访问,可以用chmod 0600 ~/.pgpass这样的命令实现。如果权限没有这么严格,该文件将被忽略。在 Microsoft Windows 上,该文件被假定存储在一个安全的目录中,因此不会进行特别的权限检查。