.pgpass 与 postgreSQL 不工作

Ker*_*ten 13 postgresql ubuntu backup

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

*:*:*:postgres:password_for_postgres
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash
export PGPASSFILE=/folder/.pgpass
echo $PGPASSFILE
pg_dump --username=postgres --format=c --file=/backup/db/db.sqlc database
Run Code Online (Sandbox Code Playgroud)

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

/K

小智 8

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


小智 8

在我的配置(Ubuntu 10.04.3PostgreSQL 8.4)上,当我登录的用户名与我试图从文件中获取密码的用户名相同时我终于可以让它工作.pgpass了。

以 身份登录deployer,我试图使用该.pgpass文件访问用户名拥有的数据库,该用户名appname没有等效的 Unix 用户。我无法完成这项.pgpass工作,直到我开始以deployer用户身份访问我的数据库...

这是我的/home/deployer/.pgpass文件内容:

*:*:*:deployer:password
Run Code Online (Sandbox Code Playgroud)

这是其中的一部分/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 
Run Code Online (Sandbox Code Playgroud)

如您所见,我所有的连接都需要密码 ( md5)。

使用此配置,假设我有一个使用此命令创建的数据库:

deployer@ubuntu-server:~$ createdb -T template0 -O deployer -E UTF8 dbname
Run Code Online (Sandbox Code Playgroud)

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

deployer@ubuntu-server:~$ dropdb dbname
Run Code Online (Sandbox Code Playgroud)

一旦我将 my 的名称更改.pgpass.pgpass-no,它将需要密码。

顺便说一句,不要忘记您的.pgpass文件必须具有以下0600权限:

deployer@ubuntu-server:~$ ls -la .pgpass
-rw------- 1 deployer staff 24 2012-01-06 17:29 .pgpass
Run Code Online (Sandbox Code Playgroud)

  • 您可以控制 pg 用户使用 `-U` 标志连接到 `dropdb` 和 `createdb` (2认同)