【发布时间】: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