根据我之前的问题How to fix Automated Backup script for postgres [Window]?。
我的PC上的pgpass.conf
似乎有问题,当尝试使用pg_dump
备份数据库时似乎没有提供所需的密码。我发现我的情况很奇怪。但是,我不知道如何解决这个问题。
在我的PC上,没有postgresql
文件夹可保留pgpass.conf
->我尝试安装Postgres,但看起来错误消息显示
问题运行安装后步骤。安装可能无法正确完成。数据库集群初始化失败。
但是,我的PC上已经有一个pgAdmin
文件夹。
我尝试通过使用pgpass.conf
根用户dir /s | find /i "pgpass.conf"
来找到c:\
。
结果似乎在我的PC上甚至不存在->因此,这就是为什么我尝试在pgpass.conf
文件夹而不是pgAdmin
文件夹中为postgresql
创建一个新文件的原因
我也尝试基于What do I need for pg_dumpall to work without a password?设置环境变量。控制台上的错误显示
'PGPASSWORD'不被识别为内部或外部命令
我试图像这样添加/编辑脚本
@echo off
echo 192.168.1.161:5432:_wolfcom:postgres:1234>"%APPDATA%\pgAdmin\pgpass.conf"
set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
cd /d "%root%"
PGPASSWORD=R0m3o^%%Ech0-5910^& pg_dumpall -h 192.168.1.161 -w -U postgres _wolfcom > "D:\Backup\DatabaseBackUp\32312.sql"
pause
有人能弄清楚如何使pgpass.conf
正常工作吗?
这是批处理文件的当前脚本
@echo off
echo 192.168.1.161:5432:_wolfcom:postgres:R0m3o^%%Ech0-5910^&>"%APPDATA%\pgAdmin\pgpass.conf"
set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
cd /d "%root%"
pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" _wolfcom
pause
这是对我有用的脚本
@echo off
echo 192.168.1.161:5432:_wolfcom:postgres:R0m3o^%%Ech0-5910^&>"%APPDATA%\postgresql\pgpass.conf"
set "root=C:\Program Files (x86)\pgAdmin 4\v3\runtime\"
cd /d "%root%"
pg_dump.exe -h 192.168.1.161 -p 5432 -U postgres -F c -b -v -f "D:\Backup\DatabaseBackUp\SQL\123456.backup" _wolfcom
pause
答案 0 :(得分:0)
像the documentation这样说:
在Microsoft Windows上,文件名为
%APPDATA%\postgresql\pgpass.conf
(其中%APPDATA%
指用户个人资料中的Application Data子目录)。
您不必搜索它,它必须恰好在此位置(除非您设置PGPASSFILE
环境变量)。如果不存在,请创建它。
另一种(也许更简单)的方法是使用pgAdmin并选中使它为您保存密码的复选框。这样会自动创建密码文件。
答案 1 :(得分:0)
Postgres 文档很好,但不是很清楚。
在我的系统 (Windows 10) 上,%APPDATA% 是 C:\Users\<UserName>\AppData\Roaming
;所以文件必须在 C:\Users\<UserName>\AppData\Roaming\postgresql\pgpass.conf
中才能被 Postgres 找到。
虽然我最初尝试将它放在 <UserName>\AppData
下,但没有奏效。从命令行使用 echo %APPDATA%
确认系统上的正确位置。