pg_dumpall without prompting password
本问题已经有最佳答案,请猛点这里访问。
我们正在尝试自动备份集群的所有PostgreSQL数据库,我们决定使用'pg_dumpall'实用程序。 但是我们找不到在没有提示密码的情况下执行'pg_dumpall'的方法。 我们正在使用PostgreSQL-10。
我们正在尝试执行以下命令
1 | pg_dumpall -U"username" -h"hostname">"location" |
如何在不提示密码的情况下自动化pg_dumpall? 请帮助我们。
谢谢
我在回答我自己的问题
我们可以使用".pgpass"文件来避免提示输入密码
"创建和使用.PGPASS文件
=====================================
.pgpass文件允许您使用postgres CLI工具,如psql和pg_dump,而无需手动输入密码 - 您可以使用脚本中的程序,而无需将其作为非密码保护的用户运行。
首先,创建.pgpass文件
1 | #nano /root/.pgpass |
根据官方文件,该文件的格式如下:
1 | hostname:port:DATABASE:username:password |
该文件支持使用#标签表示注释,*支持在通配符上匹配。这是我的一个例子:
1 | *:*:*:postgres:jerry_pass |
输入您的数据库信息并保存。
接下来,设置权限。如果他们不是600 Postgres将忽略该文件。
1 | #chmod 600 /root/.pgpass |
现在我们如何让postgres使用它?通过psql手册页快速扫描显示:
1 | -w, --no-password |
永远不要发出密码提示。如果服务器需要密码身份验证,并且其他方式(如.pgpass文件)无法使用密码,则连接尝试将失败。此选项在没有用户输入密码的批处理作业和脚本中非常有用。
以下是一些用法示例:
1 2 | #psql -d postgres -U postgres -w #pg_dump -U postgres -w -Fc " |