【问题标题】:How to use PGPASS file in Powershell to avoid password prompt?如何在 Powershell 中使用 PGPASS 文件来避免密码提示?
【发布时间】:2021-11-15 15:06:32
【问题描述】:

我不得不自动化我的 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 \中创建一个pgpass.conf文件Roaming\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 任务计划程序将其自动化。

【问题讨论】:

  • pgpass.conf 对我来说很好用 powershell。做一些基本的调试。如果您使用 cmd 而不是 powershell 怎么办? psql 而不是 pg_dump?
  • 谢谢@jjanes。它也不能在命令提示符下工作。由于没有错误消息,我不确定我错过了什么。我将使用 pg_hba 文件来允许连接“信任”,这是一种风险更大的方法,但我必须尽快完成工作。感谢您的时间和精力。
  • 在 linux 上,我接下来会使用 strace 来查看它是否正在打开 pgpass 文件。我没有对应的 windows,但大概有一个。

标签: windows postgresql powershell database-backups qliksense


【解决方案1】:

我怀疑您有合适的解决方案,但是,作为通过命令提示符快速(但不安全)的解决方法,您可以使用变量 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

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2018-09-16
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多