几种客户端连接 PostgreSQL 不输入密码的方法

平常工作中,有时需要异地连接 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 系统环境变量,在客户端设置这后,那么在客户端连接远端数据库时,将优先使用这个密码。

测试

1
2
3
4
5
6
7
8
[postgres@db6](mailto:postgres@db6)-> export PGPASSWORD=skytf
[postgres@db6](mailto: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 客户端 )

修改 /home/postgres/.pgpass 文件,增加以下,这个文件如果没有则新建一个。

格式

1
hostname:port:database:username:password

范例

1
192.168.1.25:1921:skytf:skytf:skytf

权限

1
Chmod 600 .pgpass

连接测试

1
2
3
4
5
6
[postgres@db6](mailto: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 使配置立即生效。

1
2
host skytf skytf 172.16.3.174/32 trust
[postgres@192_168_1_26 pg_root]$ pg_ctl reload -D $PGDATAserver signaled

服务端 pg_hba.conf 的配置

1
2
3
4
# 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

客户端再次连接测试

1
2
3
4
5
6
[postgres@db6](mailto: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 后,不再弹出密码输入提示。

原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/tech/database/236423.html

(0)
上一篇 2022年1月24日 21:29
下一篇 2022年1月24日 21:29

相关推荐

发表回复

登录后才能评论