postgres 免密登录¶
背景¶
1、 postgres 在使用时会要求输入密码登录数据库,这样会对脚本实现等造成困扰
解决方案¶
1、 环境变量¶
PGPASSWORD: PGPASSWORD 是postgresql 的系统环境变量,在客户端连接远程数据库时会优先使用此密码
eg:
# 使用 postgres/abc123! 登录 本地postgres 数据库;
PGPASSWORD='abc123!' psql -U postgres
注意: 使用环境变量运行,不会弹出密码提示框,但是从安全性考虑,这种方法并不推荐
2、 使用密码文件¶
在 /home/postgres/.pgpass 隐藏文件中,保存账户密码,这样也可避免登录时弹出输入密码提示.
创建密码文件¶
vi /home/postgres/.pgpass
格式:
hostname:port:database:username:password
eg:
postgres:5432:postgres:postgres:abc123!
设置文件权限¶
chmod 600 /home/postgres/.pgpass
备注:在/home/postgres 目录创建了密码文件 .pgpass 文件后,并正确配置连接信息,那么客户端连接数据时会优先使用 .pgass文件, 并使用匹配记录的密码,从而不跳出密码输入提示,这种方法比方法一更安全,所以推荐使用创建 .pgpass 文件方式。
3、修改服务端pg_hba.conf 文件¶
修改认证文件 $PGDATA/pg_hba.conf, 添加以下行, 并 reload使配置立即生效。 host ZY-BigData postgresql 192.168.8.169/32 trust
示例:
# IPv4 local connections:
host all all 0.0.0.0/32 trust
host all all 127.0.0.1/32 trust
host ZY-BigData postgresql 192.168.8.169/32 trust
host all all 0.0.0.0/0 md5
备注:修改服务端 pg_hba.conf 并 reload 后,不再弹出密码输入提示。