pgdump und Passwort

Hallo,

da man das Passwort nicht an die pgdump übergeben kann, gibt es ja die Möglichkeit die pgpass.conf (Windows) in den Anwendungsdaten\postgresql des Users anzulegen, die dann das Passwort enthält. Mal unabhängig davon, dass ich diese Variante als nicht sicherer einschätze, als das man das Passwort direkt an die exe übergeben könnte, habe ich trotzdem noch ein Problem damit:
Ich habe eine Script, dass die pgpass.conf anlegt, den dump mit pgdump.exe erzeugt und die pgpass.conf wieder löscht. Das Script wird im geplaten Takt aufgerufen. Funktioniert so ganz gut.
Wenn der geplante Task aber nun mit einem User gestartet wird, der den Server noch nie angemeldet hat, kann das Script die pgpass.conf nicht anlegen, da das Profil nicht existiert. Da ich sehr viele Installationen draußen habe taucht das Problem immer mal wieder auf. Hast du eine Idee, wie man das sinnvoller gestallten kann? Am liebsten wäre mir eine pgdump, der man das Passwort mit übergeben kann. Die Sicherheit ist gewart, da mein Script eine exe ist, und ich es der Einfachheit hier nur Script nenne (funktionniert endlich auch nicht anders).

Danke Sylvio

Falsch. Wenn Du das als Parameter übergibst, taucht es so auch in der Prozeßliste auf, und damit für andere User sichtbar. Eine ~/.pgpass ist nur für den User lesbar, dem diese gehört. Das ist sicherheitstechnisch Tag/Nacht.

Der Rest ist eher ein Windoze-Problem, zu dem ich einfach mal den Nuhr mache.

Andreas

Du kannst doch über die Umgebungsvariable PGPASSFILE definieren, wo die pgpass Datei liegt. Wenn Du die Datei an einem definierten Ort (nicht Profil-spezifisch) anlegen kannst dann brauchst Du vor dem Aufruf nur noch die Variable setzen. In einer Batch-Datei sehr einfach zu lösen

REM basedir auf das Verzeichnis setzen in dem sich diese Batchdatei befindet.
SET basedir=%~dp0
echo localhost:*:*:user_name :p assword> %basedir%pgpass.conf
set PGPASSFILE=%basedir%pgpass.conf
pg_ddump ...

Ich weiss nicht genau wie PG mit trailing spaces in der Datei umgeht, wenn die aber zu dem Password “dazugezählt” werden, dann ist es ganz wichtig das > Zeichen unmittelbar hinter dem Passwort zu schreiben, sonst landet in der pgpass.conf ein Leerzeichen nach dem Passwort.

Das ist eher ein Problem der verwendeten Shell als von PostgreSQL.
Was passiert, wenn du die Daten für Echo in Anführungszeichen setzt? Werden dann - unabhängig von äußeren Leerzeichen - genau die Daten in den Anführungszeichen geschrieben?

Wenn nicht, besorg dir eine andere Shell. Cygwin bringt die gängigen Unix-Shells mit und ist wesentlich komfortabler zu handhaben.

Das meinte ich nicht. Die Frage ist, ob Postgres ein trailing space in der pgpass als Teil des Passwortes ansieht oder nicht.

Die Lösung ist auch in einer Batchdatei kein Problem. Ich wollte nur darauf hinweisen, dass man da eventuell aufpassen muss.

Vielen Dank für die vielen Hinweise! Da ich mich an die Bedingungen meiner (ich sag mal) Kunden halten muss, ist Windows leider vorhanden und nicht zu umgehen (also bitte nicht lachen Andreas! Hilft mir auch nichts!). Ich hab mir die Hilfe von pgdump auch noch mal durchgelesen. Das Passwort ist nicht übergebbar! Es gibt den Schalter -W (Force a password prompt. This should happen automatically if the server requires password authentication.), mehr nicht. Ich würde mich über den “versteckten” Schalter sehr freuen!

Den Ansatz mit Set PSPASSFILE finde ich sehr interessant und werde ihn testen.

Darf Andreas jetzt nicht lesen (Spaß): Die Sache mit dem trailing spaces habe ich nicht ganz kappier, tippe aber auf ein UNIX/LINUX-Problen. Unter Windows gab es bis jetzt das Problem mit dem Leerzeichen nicht. :slight_smile:

Ich gebe hier feedback!

Gruß und Danke noch mal an alle Sylvio

Nochmal: ich weiß gar nicht ob es ein Problem ist…
Ich habe nie getestet ob pgpass am Ende Leerzeichen enthalten darf (das ist vollkommen unabhängig davon wie die Datei erzeugt wird).
Aber:wenn keine Leerzeichen am Ende vorhanden sein dürfen, dann muss man bei der Erstellung der Datei aufpassen. Egal wie und mit welchem OS oder Shell die Datei erstellt wird.

Hi,

ich habe die Sache mit dem set probiert und es funktioniert! Trotzdem würde mich die Sache mit der Passwortübergabe an die pg_dump.exe von Andreas noch interessieren!

Vielen Dank

Sylvio

http://www.pg-forum.de/allgemeines/3826-postgres-8-4-backup.html

Andreas