资讯专栏INFORMATION COLUMN

PostgreSQL数据库免密登录配置

IT那活儿 / 4872人阅读
PostgreSQL数据库免密登录配置

PG数据库在登录的时候,需要显示输入密码,因此在很多维护操作中都不方便,比如:定时的VACUUM脚本、定时备份脚本等。PG不能像MySQL那样可以在命令中直接输入密码。本文梳理了以下几种PG配置免密的方法。


方法一:设置pg_hab.conf 认证方式为trust

示例:
#Type database user address method
host all postgres 127.0.0.1/32 trust

该方式最不安全,导致通过指定IP连接数据库的连接都可以任意登录数据,毫无安全保障。禁止在生产环境使用


方法二:设置PG环境变量PGPASSWORD

PGPASSWORD是PostgreSQL系统环境变量,在客户端设置后再远程连接数据库时,将优先使用这个密码。

示例:

[postgres@PG-1 ~]$ export PGPASSWORD=root
[postgres@PG-1 ~]$ psql -U postgres -h 127.0.0.1 -p 5432
Timing is on.
Border style is 2.
Null display is "NULL".
psql (13.2)
Type "help" for help.

此时数据库登录时,不在提示输入用户密码


方法三:设置环境变量PGSERVICE

pg_service.conf 通过定义服务文件的方式,可以对多个数据库进行免密登录。

示例:

vi /home/postgres/.pg_service.conf
[backup]
hostaddr=127.0.0.1
port=5432
user=postgres
dbname=postgres
password=root
connect_timeout=10
[postgres@PG-1 ~]$ export PGSERVICE=backup
[postgres@PG-1 ~]$ psql -h 127.0.0.1 -p 5432 -U postgres
Timing is on.
Border style is 2.
Null display is "NULL".
psql (13.2)
Type "help" for help.

定义pg_service.conf文件,该文件可以包含多个模块,每个模块代表一个连接。


方法四:设置.pgpass文件

改文件默认在/home/postgres/,且该文件的权限要为600,如果文件权限不对,则在登录会有相应的告警输出,并要求输入用户密码。

WARNING: password file "/home/postgres/.pgpass" has group or world access; permissions should be u=rw (0600) or less
Password for user postgres:


内容格式:
host:port:dbname:username:password
示例:
[postgres@PG-1 ~]$ cat .pgpass
127.0.0.1:5432:postgres:postgres:root
localhost:5432:postgres:postgres:root
文件权限:
[postgres@PG-1 ~]$ ll -h .pgpass
-rw------- 1 postgres postgres 76 2月 24 19:26 .pgpass
登录:
[postgres@PG-1 ~]$ psql -U postgres -h 127.0.0.1 -p 5432
Timing is on.
Border style is 2.
Null display is "NULL".
psql (13.2)
Type "help" for help.


以上的几种免密方式,在使用pg_basebackup进行备份时都可适用。以下是相关验证:

1. 使用PGSERVICE环境变量

export PGSERVICE=backup
pg_basebackup -D /data/aa -Fp -X stream -R -P -c fast

2. 使用PGPASSWORD环境变量

export PGPASSWORD=password
pg_basebackup -D /data/bb -Fp -X stream -R -P -c fast -h 127.0.0.1 -p 5432 -U postgres

3. 使用.pgpass方式

vi /home/postgres/.pgpass
127.0.0.1:5432:postgres:postgres:root
chmod 600 .pgpass
pg_basebackup -D /data/bb -Fp -X stream -R -P -c fast -h 127.0.0.1 -p 5432 -U postgres

4. pg_basebackup备份使用-d参数,在连接字符串中配置连接信息

pg_basebackup   -D /data/pgdata/ -F p -R -X stream -c fast  -U replic -d host=192.168.28.169 port=5432 password=replic dbname=postgres


END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129860.html

相关文章

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<