.pgpass与postgreSQL不起作用

我在/folder/.pgpass中放入了一个.pgpass文件,看起来像这样

*:*:*:postgres:password_for_postgres 

我有一个bash脚本,我从postgreSQL备份数据库:

 #!/bin/bash export PGPASSFILE=/folder/.pgpass echo $PGPASSFILE pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database 

但是,脚本仍然要求我input密码。 就我所知,PGPASSFILE具有应有的价值。 有什么问题可能是什么暗示?

/ K

pgpass文件是否设置为0600模式(即只有所有者读/写)? 客户端库将会忽略它,如果它是组或世界可读的。

在我的configuration( Ubuntu 10.04.3PostgreSQL 8.4 )上, 当我login的用户名与我试图从.pgpass文件获取密码的用户名相同时,终于可以使用它了。

deployer身份login,我试图使用.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 )。

有了这个configuration,假设我有一个用这个命令创build的数据库:

 deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname 

我可以在不input密码的情况下执行以下操作:

 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