it-swarm.com.de

So starten Sie psql.exe

Ich bin neu bei postgresql (pg). Ich verstehe, dass ich psql.exe verwenden muss, um mit pg interagieren zu können.

In meinem System finde ich psql.exe nicht einmal, aber zweimal, warum? (C:\Program Files (x86)\pgAdmin 4\v2\runtime\psql.exe und C:\Program Files\PostgreSQL\10\bin\psql.exe). Ich habe beides mit identischen (negativen) Ergebnissen versucht.

In Verbindung mit Q/A Warum verschwindet das Befehlszeilenfenster in PostgreSQL, wenn ich nach Eingabe meines Passworts die Eingabetaste drücke? , jetzt, anstatt psql.exe direkt auszuführen, öffnete ich zuerst ein generisches (Windows) Befehlsfenster und führte dann psql.exe in diesem generischen Befehlsfenster aus. Ich habe dann das Passwort eingegeben und Enter.

Im generischen (Windows) Befehlsfenster habe ich nun die Meldung erhalten:

psql: Verbindung zum Server konnte nicht hergestellt werden: Berechtigung verweigert (0x0000271D/10013) 
Läuft der Server auf Host "localhost" (:: 1) und akzeptiert TCP/IP-Verbindungen an Port 5432? FATAL: Kennwortauthentifizierung für Benutzer "Benutzer" fehlgeschlagen

Dies entspricht dem in dem oben genannten Q/A beschriebenen (jedoch nicht gelösten) Problem. Andere Threads in diesem Forum schlagen fehl, da das Kennwort für das Kennwort nicht gültig ist. Dies betrifft Linux/veraltete Kennwörter/neue Kennwörter nach Kennwortänderungen.

In anderen Threads wird hier gesagt, dass es in Windows eine Datei pgpass.conf gibt. Ich finde eine Hilfedatei libpq-pgpass.html, die auch besagt, dass es auf meinem System keine solche Datei pgpass.conf gibt (oder etwas anderes mit "pgpass" außer der oben genannten HTML-Datei).

(W10 Prof 64 Bit Englisch)

Zweite Strategie:

Innerhalb des Startmenüs gibt es einen Eintrag "PostgreSQL"; unter dem - durch Eingabe verfügbar - gibt es einen Untereintrag "SQL Shell (psql)"; also habe ich das versucht.

Nur von dort bekomme ich das Windows-Cmd-Fenster, mit "psql 10.1" und mit (in [] sind es offensichtlich die Standardwerte):

Server [localhost]: I enter localhost; 
Database [postgres]: I enter postgres; 
Port [5432]: I enter 5432; 
Username [postgres]: I enter postgres; 
Password for user postgres: I enter the password which is "a".

Von dort bekomme ich eine Warnung bezüglich der Console-Codepage, die sich von der Windows-Codepage unterscheidet. Ich bekomme dann die psql-Eingabeaufforderung

postgres=#

und was funktioniert.

Auf der anderen Seite bekomme ich mit der ersten Strategie nur "Passwort:" und dann, nach Eingabe des echten Passworts (was "a" ist), fehlgeschlagene Passwort-Authentifizierung "FATAL" für Benutzer "A". .

Bei der Installation hatte ich einen Superuser "postgres" mit dem Passwort "a" erstellt, nicht einen Benutzer "A"; Andererseits bin ich Benutzer "A", der mein Windows-Administratorkonto (!) ist (kein anderer Benutzer als ich selbst auf meinem PC) und die Eingabeaufforderung "cmd", die ich normalerweise bekomme ("C:\Users\A>"); (aber wie erwartet) kein anderes Ergebnis, wenn ich den vollständigen Pfad zu psql.exe aus der Eingabeaufforderung "C:>" eingebe.

Daher ist mein Problem nun so: Wenn es aus dem Startmenü heraus ausgelöst wird, funktioniert psql.exe korrekt, da ich mir alle Fragen stellt, die ich dann richtig beantworten kann (wie oben angegeben), während es mit seinem vollständigen Pfad von der cmd gestartet wird Fenster (beide vollständigen Pfade "" ausprobiert und natürlich eingeschlossen), fragt es nur nach dem "Passwort" und sagt mir dann, dass für ein "Benutzer A" das Passwort falsch ist.

Der vollständige Pfad zu der (funktionierenden) psql.exe aus dem Startmenü ist C:\ProgramData\Microsoft\Windows\Start Menu\Programs\PostgreSQL 10\psql.exe. Wenn ich versuche, das mit dem cmd-Fenster auszuführen, bekomme ich "(path) wird nicht als interner oder externer Befehl erkannt. bedienbares Programm oder Batchdatei. ", da sich dort" SQL Shell (psql) .lnk "befindet, deren Eigenschaften die folgenden sind:" Ziel: "C:\Programme\PostgreSQL\10\scripts\runpsql.bat" " .

Das ist also die Lösung, siehe meine Antwort unten.

4
pgny

Sie führen keine psql.exe-Datei aus, aber die Datei C:\Programme\PostgreSQL\10\scripts\runpsql.bat kann beispielsweise programmgesteuert, z. von AHK:

führen Sie "C:\Programme\PostgreSQL\10\scripts\runpsql.bat" aus.

Sie erhalten dann ein generisches Windows-Befehlsfenster, in dem Sie die richtigen Fragen gestellt werden (siehe oben). Wenn Sie die richtige Antwort erhalten, erhalten Sie den psql-Befehl Prompt.

5
pgny

Öffnen Sie die Eingabeaufforderung (Winkey+R), geben Sie dann C:\Program Files\PostgreSQL\10\bin\psql.exe ein, drücken Sie die Eingabetaste und geben Sie das Kennwort ein. Dies unterscheidet sich von dem, was Sie getan haben, indem Sie psql.exe nicht schließen, nachdem Sie eine Fehlermeldung erhalten haben.

Nachdem Sie den Fehler gefunden haben, lesen Sie ihn bitte sorgfältig durch und suchen Sie nach einer Lösung in SO oder bei Google (oder sogar in der manuellen Dokumentation). Wenn Sie immer noch nicht erfolgreich sind, können Sie eine weitere Frage posten. 

0
Vao Tsun