Wie mache ich psql standardmäßig auf localhost?

10

Ich habe das folgende Szenario:

saji@geeklap:~$ psql -U postgres
psql: FATAL:  Ident authentication failed for user "postgres"

saji@geeklap:~$ psql -h localhost -U postgres
Password for user postgres: 
psql (8.4.14)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=# 

Ich versuche, postgresqlmich als Benutzer bei dem auf meinem System installierten Server anzumelden postgres. Ich kann mich nur anmelden, wenn ich dies spezifiziere -h localhost. In der psqlDokumentation heißt es:

Wenn Sie den Hostnamen weglassen, stellt psql über einen Unix-Domain-Socket eine Verbindung zu einem Server auf dem lokalen Host oder über TCP / IP zu localhost auf Computern her, die keine Unix-Domain-Sockets haben.

Ref: http://www.postgresql.org/docs/current/static/app-psql.html#R2-APP-PSQL-CON

Warum kann ich mich nicht anmelden, ohne den Host anzugeben psql? Gibt es eine Konfigurationsdatei, die geändert werden muss, damit die in der Dokumentation beschriebenen Vorgänge ausgeführt werden können?

saji89
quelle
Erstellen Sie eine .psqlrc, die die Standardeinstellungen angibt - oder bearbeiten Sie pg_hba.confsie einfach, um die md5Authentifizierung für local(Unix-Socket-) Verbindungen zu verwenden. Siehe die Dokumentation für pg_hba.confund psql.
Craig Ringer

Antworten:

7

In der Tat funktioniert es wie dokumentiert.

Wenn der Hostname weggelassen wird, wird eine psqlVerbindung zum Unix-Domain-Socket hergestellt, in dem der Pfad kompiliert ist. Dieser Teil funktioniert in Ihrem Fall, andernfalls wird eine andere Fehlermeldung ausgegeben als in der Frage angegeben.

Die Fehlermeldung in der Frage:

psql: FATAL:  Ident authentication failed for user "postgres"

bezieht sich auf die Tatsache, dass nur der Unix-Benutzer postgres die Berechtigung hat, eine Verbindung als Datenbankbenutzer postgres herzustellen, wenn ein Unix-Domain-Socket verwendet wird. Dies ist in der pg_hba.confDatei konfiguriert .

Was Sie normalerweise in Ubuntu tun sollten, wenn Sie als normaler Benutzer angemeldet sind, aber der Administrator des Systems sind:

$ sudo -u postgres psql
Daniel Vérité
quelle
1
Danke .. Bitte wechseln Sie sudo -u postgresql psqlzu sudo -u postgres psql. Ich habe versucht zu bearbeiten. Konnte aber nicht, da die Bearbeitung nur <6 Zeichen hat.
saji89
13

Wenn Ihnen die Standardeinstellung für die Verbindung über einen Unix-Socket nicht gefällt, können Sie die Umgebungsvariable festlegen PGHOST. ich habe

export PGHOST="db"

in meinem ~/.bashrc, um eine Verbindung zum Server mit diesem Namen herzustellen. Einige weitere nützliche Umgebungsvariablen sind unter http://www.postgresql.org/docs/9.5/static/libpq-envars.html dokumentiert

Andrew
quelle