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, postgresql
mich als Benutzer bei dem auf meinem System installierten Server anzumelden postgres
. Ich kann mich nur anmelden, wenn ich dies spezifiziere -h localhost
. In der psql
Dokumentation 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?
postgresql
12.04
saji89
quelle
quelle
.psqlrc
, die die Standardeinstellungen angibt - oder bearbeiten Siepg_hba.conf
sie einfach, um diemd5
Authentifizierung fürlocal
(Unix-Socket-) Verbindungen zu verwenden. Siehe die Dokumentation fürpg_hba.conf
undpsql
.Antworten:
In der Tat funktioniert es wie dokumentiert.
Wenn der Hostname weggelassen wird, wird eine
psql
Verbindung 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:
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.conf
Datei konfiguriert .Was Sie normalerweise in Ubuntu tun sollten, wenn Sie als normaler Benutzer angemeldet sind, aber der Administrator des Systems sind:
quelle
sudo -u postgresql psql
zusudo -u postgres psql
. Ich habe versucht zu bearbeiten. Konnte aber nicht, da die Bearbeitung nur <6 Zeichen hat.Wenn Ihnen die Standardeinstellung für die Verbindung über einen Unix-Socket nicht gefällt, können Sie die Umgebungsvariable festlegen
PGHOST
. ich habein 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 dokumentiertquelle