如何在Powershell中使用PGPASS文件来避免密码提示?

问题描述 投票:0回答:3

我必须自动化我的 postgre 数据库备份。按照我的软件供应商的指示,我尝试使用 pg_dump.exe(见下文)文件进行备份,但这会提示我输入密码。

.\pg_dump.exe -h localhost -p 4432 -U postgres -v -b -F t -f "C:\Backup\Backup.tar" Repo

所以用谷歌搜索并发现根据“https://www.postgresql.org/docs/9.6/libpq-pgpass.html”我可以在'C:\ Users \ User1 \ AppData \ Roaming \中创建一个pgpass.conf文件postgresql\pgpass.conf”是我做的。

然后我尝试在执行 pg_dump 命令之前将 pgpass.conf 文件的数据传递给 env 变量。但它不起作用。我仍然收到输入密码的提示。这是 pgpass.conf 文件的内容: *:*:*:postgres:password

下面是我在 PowerShell 中尝试的代码,

   $Env:PGPASSFILE="C:\Users\User1\AppData\Roaming\postgresql\pgpass.conf"
   cd "C:\Program Files\Qlik\Sense\Repository\PostgreSQL\9.6\bin"
   .\pg_dump.exe -h localhost -p 4432 -U postgres -v -b -F t -f "C:\Backup\Backup.tar" Repo

为什么我仍然被要求输入密码?

当我输入以下代码时

$Env:AppData
我得到以下响应“C:\ Users \ User1 \ AppData \ Roaming”

到处都有关于如何在 UNIX 或命令提示符中使用它的指南,但没有在 powershell 中使用它。任何帮助表示赞赏。另外,如果您能指导我如何保护此密码文件,那就太好了。

出现密码提示时,我无法使用 Windows 任务计划程序自动执行它。

windows postgresql powershell database-backups qliksense
3个回答
0
投票

我怀疑您有合适的解决方案,但是,作为通过命令提示符的快速(且不安全)解决方法,您可以使用变量 PGPASSWORD 保存密码,然后运行备份脚本。

示例可能类似于:

SET PGPASSWORD=password

cd "C:\Program Files\Qlik\Sense\Repository\PostgreSQL\9.6\bin" pg_dump.exe -h localhost -p 4432 -U postgres -b -F t -f "d:\qs_backup\QSR_backup.tar" QSR


0
投票

我还没有让这该死的东西发挥作用,但我确实找到了这个

-w --no-password 从不发出密码提示。如果服务器需要密码验证并且无法通过其他方式获得密码 例如 .pgpass 文件,连接尝试将失败。这个选项 在没有用户在场的批处理作业和脚本中非常有用 输入密码。

我在调用 pg_dump 时没有看到 -w 参数


0
投票

我使用 pg_hba 文件来允许连接“信任”(风险较高的方法,但我必须尽快完成工作)。

© www.soinside.com 2019 - 2024. All rights reserved.