代码改变世界

避免硬编码你的PostgreSQL数据库密码

2016-04-04 09:00  DataBases  阅读(674)  评论(0编辑  收藏  举报

一个密码文件包含了我们需要连接的五个字段,所以我们可以使用文件权限来使密码更安全。

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服务器中。