有什么方法可以修复 pgpass.conf 以在 Windows 上正常工作吗?
Is there any way to fix pgpass.conf to work properly on Windows?
根据我之前的问题。
我的 PC 上的 pgpass.conf
似乎有问题,当尝试使用 pg_dump
备份数据库时似乎没有提供所需的密码。我发现我的情况很奇怪。但是,我不知道如何解决这个问题。
在我的 PC 上,没有 postgresql
文件夹可以保留 pgpass.conf
-> 我已经尝试安装 Postgres,但看起来错误消息显示
problem running post-install step. Installation may not complete correctly. The database cluster initialisation failed.
但是,我的 PC 上已经有一个 pgAdmin
文件夹。
我试图通过使用根 c:\
中的 dir /s | find /i "pgpass.conf"
找到 pgpass.conf
。
结果看起来它甚至不存在于我的电脑上 -> 所以这就是为什么我试图在文件夹 pgAdmin
中为 pgpass.conf
创建一个新文件而不是 postgresql
文件夹。
我也试过设置一个环境变量,基于What do I need for pg_dumpall to work without a password?。控制台上的错误显示
'PGPASSWORD' is not recognized as an internal or external command
我试过add/edit这样的脚本
@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\DatabaseBackUp312.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\SQL3456.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\SQL3456.backup" _wolfcom
pause
喜欢the documentation 说:
On Microsoft Windows the file is named %APPDATA%\postgresql\pgpass.conf
(where %APPDATA%
refers to the Application Data subdirectory in the user's profile).
你不必搜索它,它必须正好在这个地方(除非你设置了 PGPASSFILE
环境变量)。如果不存在,则创建它。
另一种(也许更简单)的方法是使用 pgAdmin 并选中使它为您保存密码的复选框。自动创建密码文件。
Postgres 文档很好,但不是很清楚。
在我的系统 (Windows 10) 上,%APPDATA% 是 C:\Users\<UserName>\AppData\Roaming
;所以文件必须在 C:\Users\<UserName>\AppData\Roaming\postgresql\pgpass.conf
中才能被 Postgres 找到。
虽然我最初尝试将它放在 <UserName>\AppData
下,但没有用。从命令行使用 echo %APPDATA%
确认系统上的正确位置。
根据我之前的问题
我的 PC 上的 pgpass.conf
似乎有问题,当尝试使用 pg_dump
备份数据库时似乎没有提供所需的密码。我发现我的情况很奇怪。但是,我不知道如何解决这个问题。
在我的 PC 上,没有
postgresql
文件夹可以保留pgpass.conf
-> 我已经尝试安装 Postgres,但看起来错误消息显示problem running post-install step. Installation may not complete correctly. The database cluster initialisation failed.
但是,我的 PC 上已经有一个
pgAdmin
文件夹。我试图通过使用根
c:\
中的dir /s | find /i "pgpass.conf"
找到pgpass.conf
。结果看起来它甚至不存在于我的电脑上 -> 所以这就是为什么我试图在文件夹
pgAdmin
中为pgpass.conf
创建一个新文件而不是postgresql
文件夹。我也试过设置一个环境变量,基于What do I need for pg_dumpall to work without a password?。控制台上的错误显示
'PGPASSWORD' is not recognized as an internal or external command
我试过add/edit这样的脚本
@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\DatabaseBackUp312.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\SQL3456.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\SQL3456.backup" _wolfcom
pause
喜欢the documentation 说:
On Microsoft Windows the file is named
%APPDATA%\postgresql\pgpass.conf
(where%APPDATA%
refers to the Application Data subdirectory in the user's profile).
你不必搜索它,它必须正好在这个地方(除非你设置了 PGPASSFILE
环境变量)。如果不存在,则创建它。
另一种(也许更简单)的方法是使用 pgAdmin 并选中使它为您保存密码的复选框。自动创建密码文件。
Postgres 文档很好,但不是很清楚。
在我的系统 (Windows 10) 上,%APPDATA% 是 C:\Users\<UserName>\AppData\Roaming
;所以文件必须在 C:\Users\<UserName>\AppData\Roaming\postgresql\pgpass.conf
中才能被 Postgres 找到。
虽然我最初尝试将它放在 <UserName>\AppData
下,但没有用。从命令行使用 echo %APPDATA%
确认系统上的正确位置。