jit*_*iri 2 postgresql postgresql-10 pg-dumpall
我们正在尝试自动备份集群的所有 PostgreSQL 数据库,我们决定使用“pg_dumpall”实用程序。但是我们找不到在不提示密码的情况下执行“pg_dumpall”的方法。我们正在使用 PostgreSQL-10。
我们正在尝试执行以下命令
pg_dumpall -U "username" -h "hostname" > "location"
Run Code Online (Sandbox Code Playgroud)
我们如何在不提示密码的情况下自动化 pg_dumpall ?请帮助我们解决这个问题。谢谢
我正在回答我自己的问题
我们可以使用“.pgpass”文件来避免提示密码
" 创建和使用 .PGPASS 文件
======================================
.pgpass 文件将允许您使用 psql 和 pg_dump 等 postgres CLI 工具,而无需手动输入密码——您可以使用脚本中的程序,而无需以非密码保护用户的身份运行它们。
首先,创建 .pgpass 文件
#nano /root/.pgpass
Run Code Online (Sandbox Code Playgroud)
根据官方文档,文件格式如下:
hostname:port:database:username:password
Run Code Online (Sandbox Code Playgroud)
该文件支持使用 # 标记进行注释,并支持使用 * 匹配通配符。这是我的一个例子:
*:*:*:postgres:jerry_pass
Run Code Online (Sandbox Code Playgroud)
输入您的数据库信息并保存。
接下来,设置权限。如果它们不是 600 Postgres 将忽略该文件。
#chmod 600 /root/.pgpass
Run Code Online (Sandbox Code Playgroud)
现在我们如何让 postgres 使用它?通过 psql 手册页快速扫描显示:
-w, --no-password
Run Code Online (Sandbox Code Playgroud)
永远不要发出密码提示。如果服务器需要密码验证并且密码不能通过其他方式(例如 .pgpass 文件)获得,则连接尝试将失败。此选项在没有用户输入密码的批处理作业和脚本中很有用。
以下是一些使用示例:
#psql -d postgres -U postgres -w
#pg_dump -U postgres -w -Fc "
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6628 次 |
| 最近记录: |