PostgreSql自动备份密码设置问题+官方说明

方法一:设置环境变量 PGPASSWORD   

PGPASSWORD  是 PostgreSQL 系统环境变量,连接远端数据库时,将优先使用这个密码。变量是临时的,在关闭 shell 时失效。具体步骤是:先设置环境变量,备份,再删除环境变量。

export PGPASSWORD="密码"
pg_dump -h 127.0.0.1 -p 5432 -U postgres dbname > /home/2021db.bak
export -n PGPASSWORD="密码"

     备注:最后要删除环境变量,保证安全性。
方法二:设置 .pgpass 密码文件
      
通过在当前用户目录下创建隐藏文件 .pgpass ,从而避免连接数据库时弹出密码输入提示。

vi ~/.pgpass
*:5432:*:username:password
chmod 0600 ~/.pgpass

      备注:最后要设置权限0600,保证安全性。                                

                
方法三:修改服务器端 pg_hba.conf

修改认证文件 $PGDATA/pg_hba.conf, 添加以下行, 并 reload使配置立即生效。
    
host    dbname         postgres            127.0.0.1/24           trust

service postgresql reload

     备注:修改服务端 pg_hba.conf 并 reload 后,不再弹出密码输入提示。这样安全性差,慎用

引用官方说明文档:

用户家目录中的 .pgpass 或者 PGPASSFILE 引用的文件是一个可包含口令的文件。如果连接要求口令(并且没有用其它方法声明口令),那么可以用它。在 Microsoft Windows 上,文件名字是 %APPDATA%\postgresql\pgpass.conf (这里的 %APPDATA% 指用户配置里的 Application Data 子目录)。

这个文件应该有下面这样的格式行:

hostname:port:database:username:password

头四个字段每个都可以是一个文本值,或者 *,它匹配所有的东西。第一个匹配当前连接参数的口令行的口令域将得以使用。(因此,如果你使用了通配符,那么应该把最具体的记录放在前面。)如果记录包含 : 或者 \ ,应该用 \ 逃逸。一个 localhost 的主机名匹配来自本机的 host(TCP)和 local (Unix 域套接字)。

.pgpass 的权限必须不允许任何全局或者同组的用户访问;我们可以用命令 chmod 0600 ~/.pgpass 实现这个目的。如果权限比这个松,这个文件将被忽略。(不过目前在 Microsoft Windows 上没有检查这个文件的权限。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

才 神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值