.pgpass与postgreSQL无法正常工作


13

我已经将.pgpass文件放在/folder/.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

但是,脚本仍然提示我输入密码。据我所知,PGPASSFILE具有应有的值。关于可能是什么问题的任何提示?

/千

Answers:


8

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


5

在我的配置(Ubuntu 10.04.3PostgreSQL 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

2
您可以控制pg用户进行连接,方法是使用-U标记连接至dropdbcreatedb
Kevin Horn 2012年

0

1)创建包含内容的.pgpass文件

主机:5432:somedb:someuser:somepass

2)使用命令设置权限

须藤chmod 600 .pgpass

3)将文件所有者设置为您登录时使用的同一用户:

sudo chown login_username:login_username .pgpass

4)设置PGPASSFILE环境变量:

导出PGPASSFILE ='/ home / user / .pgpass'

现在通过连接到数据库进行检查:

psql -h host -U someuser somedb

我不会提示输入密码并登录到postgresql。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.