用户主目录中的文件
.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 上,
假定该文件被存储在一个安全的目录中,
因此不做特殊的权限检查。