Postgresql pg_转储密码身份验证失败Windows中的pgpass.conf文件出错
我无法进行备份,因为pg_dump显示以下错误Postgresql pg_转储密码身份验证失败Windows中的pgpass.conf文件出错,postgresql,batch-file,scheduled-tasks,postgresql-9.4,pg-dump,Postgresql,Batch File,Scheduled Tasks,Postgresql 9.4,Pg Dump,我无法进行备份,因为pg_dump显示以下错误 pg_dump: [archiver (db)] connection to database "mydb" failed: FATAL: password authentication failed for user "postgres" password retrieved from file "C:\Users\MyName\AppData\Roaming\postgresql\pgpass.conf" 这就是我的pgpass文件
pg_dump: [archiver (db)] connection to database "mydb" failed:
FATAL: password authentication failed for user "postgres"
password retrieved from file
"C:\Users\MyName\AppData\Roaming\postgresql\pgpass.conf"
这就是我的pgpass文件的样子
localhost:5432:mydb:postgres:mypassword
当我删除pgpass.conf文件并运行pg_转储文件时,它会提示输入密码,备份会正常运行
这就是pg_dump脚本的样子
set PGPASSFILE=%APPDATA%\postgresql\pgpass.conf
%PG_BIN%pg_dump -h %PG_HOST% -p %PG_PORT% -U %PG_USER% -F c -b -v -f %BACKUP_FILE% %DB%
这是Windows计划的任务,因此我不希望用户输入密码 我发现了问题。创建pgpass.conf文件的脚本在密码后创建了一个空格,该空格导致password-mypassword错误。因此,当我删除空间,它正常工作 创建pgpass文件的脚本是:
echo %PG_HOST%:%PG_PORT%:*:%PG_USER%:%PG_PASSWORD% > %PGPASS_FILE%
我把它改成了下面的。请参阅PG_PASSWORD%和>之间的空格已删除
echo %PG_HOST%:%PG_PORT%:*:%PG_USER%:%PG_PASSWORD%> %PGPASS_FILE%
变量
%PG\u PORT%
、%PG\u USER%
%PG\u HOST%
和%DB%
包含哪些值?端口来自注册表文件。user-postgres,host-localhost,db-mydb“这是一个Windows计划任务”-该任务在哪个Windows用户下运行?那是我的名字吗?是的。MyName是当前登录并运行计划任务的Windows用户。如果环境变量中包含所有这些值,则实际上不需要创建该文件。问题是,在Windows Server 2012 R2中,pgpass.conf文件未设置密码。文件在那里,但它是空的。