作者:php麟状 | 来源:互联网 | 2014-05-28 15:41
平常工作中,有时需要异地连接PostgreSQL数据库做些维护,例如异地备份等;如果备份脚本写在异地机器,备份的时候会弹出密码输入提示,那么脚本就不能后台执行,这里总结了几种不弹出密码输入提示的方法。--测试环境目标库IP:192.168.1.25/1921;数
平常工作中,有时需要异地连接
PostgreSQL 数据库做些维护,例如异地备份等;
如果备份脚本写在异地机器,备份的时候会弹出密码输入提示,那么脚本就不能后台执
行,这里总结了几种不弹出密码输入提示的方法。
--测试环境
目标库IP: 192.168.1.25/1921 ; 数据库
skytf
客户端IP: 192.168.1.26
--在 192.168.1.26 连接数据库 skytf ,
弹出密码提示
postgres@db6-> psql -h 192.168.1.25 -p 1921
skytf skytf
Password for user skytf:
方法一:设置环境变量 PGPASSWORD
PGPASSWORD 是 PostgreSQL
系统环境变量,在客户端设置这后,那么在客户
端连接远端数据库时,将优先使用这个密码。
--测试
postgres@db6-> export
PGPASSWORD=skytf
postgres@db6-> psql -h 192.168.1.25 -p 1921 skytf skytf
psql (9.1beta3, server
9.0.1)
WARNING: psql version 9.1, server version
9.0.
Some psql features
might not
work.
Type "help" for
help.
skytf=>
\q
备注:设置环境变量 PGPASSWORD
,连接数据库不再弹出密码输入提示。 但是从安全性
方面考虑,这种方法并不推荐,
方法二:设置 .pgpass
密码文件
通过在客户端 /home/postgres
目录下创建隐藏文件 .pgpass ,从而避免连接
数据库时弹出密码输入提示。
--创建密码文件 .pgpass ( on 客户端
)
vi /home/postgres/.pgpass
--格式
hostname:port:database:username:password
--范例
192.168.1.25:1921:skytf:skytf:skytf
--权限
Chmod 600
.pgpass
--连接测试
postgres@db6-> psql -h
192.168.1.25 -p 1921 skytf skytf
psql (9.1beta3, server 9.0.1)
WARNING: psql version 9.1, server version 9.0.
Some psql features
might not work.
Type "help" for help.
skytf=>
备注:在/home/postgres 目录创建了密码文件
.pgpass 文件后,并正确配置连接信息,
那么客户端连接数据时会优先使用 .pgass文件, 并使用匹配记录的密码,从而
不跳出密码输入提示,这种方法比方法一更安全,所以推荐使用创建 .pgpass 文
件方式。
方法三:修改服务端 pg_hba.conf
修改认证文件 $PGDATA/pg_hba.conf, 添加以下行, 并
reload使配置立即生效。
host
skytf
skytf
172.16.3.174/32
trust
[postgres@192_168_1_26 pg_root]$ pg_ctl reload -D
$PGDATA
server signaled
--服务端 pg_hba.conf 的配置
# IPv4 local connections:
host
all
all
127.0.0.1/32
trust
host
skytf
skytf
172.16.3.174/32
trust
host
all
all
0.0.0.0/0
md5
--客户端再次连接测试
postgres@db6-> psql -h
192.168.1.25 -p 1921 skytf skytf
psql (9.1beta3, server 9.0.1)
WARNING: psql version 9.1, server version 9.0.
Some psql features
might not work.
Type "help" for help.
skytf=> \q
备注:修改服务端 pg_hba.conf 并 reload
后,不再弹出密码输入提示。