一个密码文件包含了我们需要连接的五个字段,所以我们可以使用文件权限来使密码更安全。
host:port:dbname:user:password
such as myhost:5432:postgres:sriggs:moresecure
密码文件是使用一个叫PGPASSFILE的环境变量来设置的。如果PGPASSFILE没有设置,然后,一个默认的文件名和位置被搜索:
在*nix系统,检查~/pgpass.
在Windows系统,检查%APPDATA%\postgresql\pgpass.conf,%APPDATA%是路径中应用数据子目录(对我来说,是C:\)
在*nix系统,chmod 0600 ~/.pgpass
密码文件可以包含多行。每行与请求的host:port:dbname:user组合匹配,直到我们找到一行匹配行,然后我们使用那个密码。
每个条目可以是一个文本值或*一个可以匹配任何字符的通配符。不支持部分匹配。不支持部分匹配。有了适当的权限,用户可以连接到任何数据库。在dbname和port字段使用通配符是有意义的,虽然在其他字段是没有意义的。示例如下:
host:port:dbname:user:password
myhost:5432:*:sriggs:moresecurepw
myhost:5432:perf:hannu:okpw
myhost:*:perf:gabriele:maggioresicurezza
如果你有少量的数据库服务器,这看起来是一个很好的改进。如果你有许多不同的数据库服务器,你可能想使用一个连接服务的文件,或者是把细节存储在LDAP服务器中。