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!
Es gibt zwei Möglichkeiten:
set PGPASSWORD=yoursecretpassword
%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).
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]
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:\
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,
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 .
Erstellen Sie ein lokales oder Domänenbenutzerkonto und einen PostgreSQL-Anmeldenamen mit demselben Namen.
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).
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
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.