webentwicklung-frage-antwort-db.com.de

Windows PSQL-Befehlszeile: Gibt es eine Möglichkeit, die Anmeldung ohne Kennwort zuzulassen?

Mein Ziel ist es, einen Befehl auslösen zu können, ohne dass ich dazu aufgefordert werden muss, mein Passwort einzugeben. Gibt es eine Möglichkeit, dies über die Windows-Befehlszeile zu erreichen? In Linux habe ich das Gefühl, ich könnte das Passwort standardmäßig senden oder so, aber ich bin nicht sicher, ob ich das für Windows tun könnte.

Vielen Dank!

18

Es gibt zwei Möglichkeiten:

  • Umgebungsvariable PGPASSWORD setzen, z. set PGPASSWORD=yoursecretpassword
  • Verwenden Sie die Passwortdatei %APPDATA%\postgresql\pgpass.conf wie in documentation beschrieben.

In der Kennwortdatei (mein Speicherort lautet C:\Users\Grzesiek\AppData\Roaming\postgresql\pgpass.conf) ist die Verwendung im Dokumentformat angegeben. Um beispielsweise Datenbankpostgres als Rollenpostgres auf dem lokalen 5432-Server zu verbinden, fügen Sie Folgendes hinzu:

localhost:5432:postgres:postgres:12345

Ich habe dies überprüft und es funktioniert gut (für mich), aber verwende keine 127.0.0.1).

20

Eine weitere praktische Option (insbesondere wenn Ihr PG-Server auf Ihrem eigenen Client-Computer ausgeführt wird und dies für Sie kein Sicherheitsproblem darstellt), ist die Anmeldung ohne Kennwort im Server (Authentifizierungsmodus "Vertrauen"). 

Beispielsweise gibt diese Zeile in pg_hba.conf (in Ihrem DATA-Verzeichnis ein typischer Speicherort: C:\Program Files\PostgreSQL\9.0\data\) den Zugriff ohne Kennwort von Ihrem lokalen Computer aus.

Host     all     all     127.0.0.1/32    trust

Verbinden Sie sich dann mit 

  psql.exe -h 127.0.0.1 -U postgres -w [YOUR_DB_NAME]
12
leonbloy

Ich weiß, es ist eine alte Frage, aber für jeden, der so aussieht wie ich, ist es schwer, eine Lösung für Fenster zu finden. kleben Sie dies in eine .bat-Datei und es wird funktionieren (zumindest für mich hat es getan). Wechseln Sie in das Postres-Verzeichnis, setzen Sie die Umgebungsvariable PHPASSWORD, führen Sie den Befehl copy in eine CSV-Datei aus und löschen Sie die Umgebungsvariable. Kehren Sie dann zum Stammverzeichnis zurück.

cd C:\Program Files\PostgreSQL\9.5\bin\

set PGPASSWORD=yourpassword


psql -d databasename -U yourusername -w -c "\COPY (select * from yourtable) TO 'c:/Users/yourdirectory/yourcsvfilename.csv' DELIMITER '|' CSV HEADER;"

set PGPASSWORD=

cd c:\
1
klmbear

Ich habe eine andere nützliche Lösung gefunden, die bei diesem Link für mich funktioniert. Im Grunde setzt es die Variable PGPASSWORD am Anfang Ihres Befehls wie folgt:

PGPASSWORD=PASSWORD psql YOUR_CODE

Schritte:

Erstes ENvironment Var PGPASSWORD

C:\Windows\system32> set PGPASSWORD = clave

vor

psql -d basededatos -U usuario

Bereit,

0
JAGJ jdfoxito

Ich weiß, dass diese Frage jetzt schon etwas älter ist, aber ich glaube, es gibt bessere Möglichkeiten für eine sichere, kennwortfreie PostgreSQL-Anmeldung unter Windows - SSPI .

  1. Erstellen Sie ein lokales oder Domänenbenutzerkonto und einen PostgreSQL-Anmeldenamen mit demselben Namen. 

  2. Erstellen Sie in pg_ident.conf ein Mapping:

    # MAPNAME   SYSTEM-USERNAME      PG-USERNAME
    SSPI        [email protected]   loginname
    

    Ersetzen Sie Benutzername durch den Windows-Benutzernamen (dies ist das sAMAccountName-Attribut für Domänenkonten), und ersetzen Sie AUTHORITY durch den Computernamen oder den kurzen Domänennamen. Wenn Sie nicht sicher sind, was für AUTHORITY verwendet werden soll, überprüfen Sie die PostgreSQL-Protokolldatei. Bei einem lokalen Konto ist dies der Computername. Bei einem Domänenkonto handelt es sich wahrscheinlich um den kurzen Domänennamen. Ersetzen Sie schließlich loginname durch den PostgreSQL-Anmeldenamen (um Verwirrung zu vermeiden, würde ich empfehlen, den gleichen Namen für username und loginname zu verwenden).

  3. Erlauben Sie in pg_hba.conf die Anmeldung. z.B.:

    # TYPE   DATABASE   USER        ADDRESS        METHOD
    Host     all        loginname   127.0.0.1/32   sspi map=SSPI
    Host     all        loginname   ::1/128        sspi map=SSPI
    
  4. Wenn ein Domänenkonto vorhanden ist, legen Sie einen SPN für dieses Konto fest. z.B.:

    setspn -S POSTGRES/serverfqdn username
    

Jetzt können Sie sich mit dem angegebenen Benutzernamen bei Windows anmelden und psql.exe usw. ausführen, ohne ein Kennwort zu benötigen.

0
Bill_Stewart