406 Stimmen

Postgresql: Scripting psql-Ausführung mit Passwort

Wie kann ich anrufen psql so dass es fragt nicht nach einem Passwort ?

Das habe ich:

psql -Umyuser < myscript.sql

Ich konnte jedoch das Argument für die Übergabe des Passworts nicht finden, so dass psql immer nach dem Passwort fragt.

520voto

Reece Punkte 6641

Vielleicht möchten Sie eine Zusammenfassung lesen von die Möglichkeiten zur Authentifizierung bei PostgreSQL .

Um Ihre Frage zu beantworten: Es gibt mehrere Möglichkeiten, ein Kennwort für die kennwortbasierte Authentifizierung bereitzustellen:

  1. Über die Passwortabfrage . Beispiel:

    psql -h uta.biocommons.org -U foo
    Password for user foo: 
  2. In einer pgpass-Datei . Voir libpq-pgpass . Format:

    <host>:<port>:<database>:<user>:<password>
  3. Mit dem PGPASSWORD Umgebungsvariable . Voir libpq-envars . Beispiel:

    export PGPASSWORD=yourpass
    psql ...
    
    # Or in one line for this invocation only:
    PGPASSWORD=yourpass psql ...
  4. In der Verbindungszeichenfolge Das Passwort und andere Optionen können in der Verbindungszeichenfolge/URI angegeben werden. Siehe app-psql . Beispiel:

    psql postgresql://username:password@dbmaster:5433/mydb?sslmode=require

196voto

Greg Punkte 4341
PGPASSWORD=[your password] psql -Umyuser < myscript.sql

83voto

jbaylina Punkte 4118

Sie können diese Befehlszeile an den Anfang Ihres Skripts stellen:

export PGPASSWORD="[your password]"

59voto

tandy Punkte 1841

Wenn Sie beabsichtigen, mehrere Hosts/Datenbankverbindungen zu haben, muss die ~/.pgpass Datei ist der richtige Weg.

Schritte:

  1. Erstellen Sie die Datei mit vim ~/.pgpass oder ähnlich. Geben Sie Ihre Informationen in folgendem Format ein: hostname:port:database:username:password Fügen Sie keine Anführungszeichen um Ihre Feldwerte hinzu. Sie können auch * als Platzhalter für Ihre Anschluss-/Datenbankfelder verwenden.
  2. Sie müssen chmod 0600 ~/.pgpass damit es von psql nicht stillschweigend ignoriert wird.
  3. Erstellen Sie einen Alias in Ihrem Bash-Profil, der den Befehl psql für Sie ausführt. Zum Beispiel: alias postygresy='psql --host hostname database_name -U username' Die Werte sollten mit denen übereinstimmen, die Sie in die Datei ~/.pgpass eingegeben haben.
  4. Geben Sie Ihr Bash-Profil mit . ~/.bashrc oder ähnlich.
  5. Geben Sie Ihren Alias in der Befehlszeile ein.

Beachten Sie, dass die Variable export PGPASSWORD='' Vorrang vor der Datei hat, wenn Sie sie gesetzt haben.

59voto

ajxs Punkte 3097

Diese Frage ist vielleicht schon alt, aber es gibt eine alternative Methode, die noch niemand erwähnt hat. Es ist möglich, das Kennwort direkt in der URI der Verbindung anzugeben. Die Dokumentation dazu finden Sie unter hier alternativ hier .

Sie können Ihren Benutzernamen und Ihr Kennwort direkt in die URI der Verbindung eingeben, die an psql :

# postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
psql postgresql://username:password@localhost:5432/mydb

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X