【问题标题】:Is there any way to fix pgpass.conf to work properly on Windows?有什么方法可以修复 pgpass.conf 以在 Windows 上正常工作?
【发布时间】:2019-09-25 19:27:24
【问题描述】:

基于我之前的问题How to fix Automated Backup script for postgres [Window]?

我的 PC 上的 pgpass.conf 似乎存在一些问题,当尝试使用 pg_dump 备份数据库时,它似乎没有提供所需的密码。我发现我的情况很奇怪。但是,我不知道如何解决这个问题。

  1. 在我的 PC 上,没有 postgresql 文件夹来保存 pgpass.conf -> 我尝试安装 Postgres,但似乎显示错误消息

    运行安装后步骤时出现问题。安装可能无法正确完成。数据库集群初始化失败。

    但是,我的 PC 上已经有一个 pgAdmin 文件夹。

  2. 我已尝试使用来自根 c:\dir /s | find /i "pgpass.conf" 来查找 pgpass.conf

    结果看起来在我的 PC 上什至不存在 -> 这就是为什么我尝试在文件夹 pgAdmin 而不是 postgresql 文件夹中为 pgpass.conf 创建一个新文件。

  3. 我也尝试根据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

【问题讨论】:

  • 正如我在其他答案的评论中提到的,它期望文件在 postgresql 中,而不是 pgAdmin。所以创建目录,重定向到那个文件夹。
  • PGPASSWORD=R0m3o^%%Ech0-5910^ 是环境变量的 unixstyle“内联”定义。这在 Windows 中不起作用。你需要在调用pg_dump之前运行SET "PGPASSWORD=..."
  • 终于可以备份数据库了!!! .非常感谢你们俩。我所做的只是创建 postgresql(只是新文件夹和新 pgpass.conf )而不安装 postgres。
  • 我将在问题中添加我的新脚本,这对我有用,希望对其他人有用

标签: windows postgresql batch-file pgadmin


【解决方案1】:

就像the documentation 说的:

在 Microsoft Windows 上,该文件名为 %APPDATA%\postgresql\pgpass.conf(其中 %APPDATA% 指的是用户配置文件中的应用程序数据子目录)。

您不必搜索它,它必须就在这个位置(除非您设置了PGPASSFILE 环境变量)。如果不存在,则创建它。

另一种(可能更简单)的方法是使用 pgAdmin 并选中使其为您保存密码的复选框。这会自动创建密码文件。

【讨论】:

  • 你的意思是像pgadmin.org/docs/pgadmin4/dev/reset_passwords.html这样的重置/清除密码吗?
  • 没有。该复选框位于(或曾经位于)您输入密码的对话框中。
  • 感谢您的帮助。我终于解决了(见我对其他 cmets 的回复)。
  • @LaurenzAlbe 好的,我明白了
【解决方案2】:

Postgres 文档很好,但并不完全清楚。

在我的系统 (Windows 10) 上,%APPDATA% 是 C:\Users\<UserName>\AppData\Roaming;所以该文件必须在 C:\Users\<UserName>\AppData\Roaming\postgresql\pgpass.conf 中才能被 Postgres 找到。

虽然我最初尝试将其放在<UserName>\AppData 下,但没有奏效。在命令行中使用echo %APPDATA% 来确认您系统上的正确位置。

【讨论】:

    猜你喜欢
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    相关资源
    最近更新 更多