pg_dump nerviger Passwort Prompt

Hallo,

Windows Server 2013 R2
PostgreSQL Version 9.2.6

Schreibe gerade in Powershell ein kleines Backup Script dass meine PostgreSQL Datrenbank per pg_dump in ein lokales Verzechnis wegsichert:

Set-Variable -Name "PGPASSFILE" -Value "C:\Scripts\Backup\pgpass.conf"
Invoke-Expression "C:\Pfad\zu\pg_dump.exe -h 127.0.0.1 -p 1234 -U user -F custom -b -v -f D:\DB.backup DB"

Das Script funktioniert mit meinem Adminaccount einwandfrei, wenn ich mich aber mit dem Account anmelde den ich im TaskScheduler hinterlegen möchte,erscheint beim Ausführen des Scripts der Passwort Prompt von pg_dump. Der Account hat Vollzugriff auf die im Script angeführten Verzeichnisse. Was mache ich falsch?

Dein Login als admin ist kein Zufall, sondern definiert. Sowas steht in pg_hba.conf
https://www.postgresql.org/docs/10/static/auth-pg-hba-conf.html

Dort definierst Du, welcher User mit welcher IP auf welche DB darf und wie er sich dafür authentifizieren muss.
In Windows und Linux ist das naturgemäß etwas unterschiedlich, vermutlich musst Du unter Windows einen reinen Usernamen, Maschinennamen/Usernamen oder Domännamen/Usernamen eintragen, entsprechend dem User den du im Service nutzt.

U.U. gibt es sogar einen Postgres User (bei der Installation angelegt). Den könnte man ggF. nutzen, es fehlen dann aber vielleicht andere WIndows-, Script-, Dateirechte.

Der Dateizugriff allein ist aber wahrscheinlich nur die halbe Miete.

Wenn das Konto für den Scheduler interaktive Anmeldung erlaubt, meld Dich einfach damit an und ruf Dein Script auf. Dann bekommst Du Klartextfehlermeldungen. Die sollten sich auch in Postgres Logs befinden, wenn eine Anmeldung fehlschlägt. Weiß nicht, wo man die unter Windows findet.

Habs hinbekommen! Hab die pgpass.conf in C:\Users\pgbackupuser\AppData\Roaming\postgresql hinterlegt. Steht ja auch so in der offiziellen Doku https://www.postgresql.org/docs/9.3/static/libpq-pgpass.html.

Die Zeile im Script mit Set-Variable konnt ich danach auskommentieren.

Warum Set-Variable nur mit dem Domain Admin aber nicht mit meinem pgbackupuser funktioniert, konnte ich nicht klären. Der User ist auch lokaler Admin des Servers. Hatte ihn auch kurz Domain Admin Rechte gegeben um identische Userrechte zu erhalten und dann erneuten Login durchgeführt, um die Rechte zu übernehmen.

Anbei noch der Inhalt der pg_hba.conf:

TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             127.0.0.1/32            md5

Die Idee mit dem Eintrag des Usernamens könnte ich noch ausprobieren. Ja, und auch die Logs wären interessant, müsste ich auch noch ausfindig machen. Aber da es nun funktioniert werde ich der Sache nicht weiter nachgehen.

Danke jedenfalls für die Antwort!

LG