在我的配置(Ubuntu 10.04.3
和PostgreSQL 8.4
)上,当我登录的用户名与我试图从文件中获取密码的用户名相同时,我终于可以使它工作.pgpass
。
以的身份登录deployer
,我试图使用该.pgpass
文件访问用户名拥有的数据库,该用户名appname
没有Unix用户等效项。在.pgpass
开始以deployer
用户身份访问数据库之前,我无法进行工作。
这是我的/home/deployer/.pgpass
文件内容:
*:*:*:deployer:password
这是其中一部分/etc/postgresql/8.4/main/pg_hba.conf
:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
如您所见,我所有的连接都需要密码(md5
)。
使用此配置,假设我拥有使用以下命令创建的数据库:
deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname
我无需输入密码即可执行以下操作:
deployer@ubuntu-server:~$ dropdb dbname
我一改名字 .pgpass
来.pgpass-no
,它会要求输入密码。
顺便说一句,不要忘记您的.pgpass
文件必须具有0600
权限:
deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
-U
标记连接至dropdb
和createdb