Jak ustawić psql jako domyślny na localhost?

10

Mam następujący scenariusz:

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=# 

Próbuję zalogować się na postgresqlserwerze zainstalowanym w moim systemie jako użytkownik postgres. Jestem w stanie zalogować się tylko, jeśli podam -h localhost. Natomiast psqldokumentacja mówi, że:

Jeśli pominiesz nazwę hosta, psql połączy się przez gniazdo domeny Unix z serwerem na hoście lokalnym lub przez TCP / IP z hostem lokalnym na komputerach, które nie mają gniazd domeny Unix.

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

Dlaczego nie mogę się zalogować bez podania hosta, czy istnieje jakiś plik konfiguracyjny, który wymaga zmiany, aby coś się wydarzyło zgodnie z psqldokumentacją?

saji89
źródło
Utwórz plik, .psqlrcktóry określa wartości domyślne - lub po prostu edytuj, pg_hba.confaby użyć md5uwierzytelniania dla localpołączeń (gniazdo unix). Zobacz dokumentację dla pg_hba.confi psql.
Craig Ringer

Odpowiedzi:

7

W rzeczywistości działa zgodnie z dokumentacją.

Gdy nazwa hosta zostanie pominięta, psqlłączy się z gniazdem domeny Unix, w której wkompilowana jest ścieżka. Ta część działa w twoim przypadku, w przeciwnym razie wyświetliby inny komunikat o błędzie niż to, co pokazuje pytanie.

Komunikat o błędzie w pytaniu:

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

odnosi się do faktu, że tylko postgres użytkownika Unix ma uprawnienia do łączenia się jako postgres użytkownika bazy danych podczas korzystania z gniazda w domenie Unix. Jest to skonfigurowane w pg_hba.confpliku.

co zwykle powinieneś robić w Ubuntu, gdy jesteś zalogowany jako zwykły użytkownik, ale jesteś administratorem systemu:

$ sudo -u postgres psql
Daniel Vérité
źródło
1
Dzięki .. Proszę zmienić sudo -u postgresql psqlna sudo -u postgres psql. Próbowałem edytować. Ale nie mógł, ponieważ edycja ma tylko <6 znaków.
saji89,
13

Jeśli nie podoba Ci się domyślne połączenie przez gniazdo unix, możesz ustawić zmienną środowiskową PGHOST. mam

export PGHOST="db"

w moim ~/.bashrc, aby połączyć się z serwerem o tej nazwie. Kilka innych przydatnych zmiennych środowiskowych udokumentowano na stronie http://www.postgresql.org/docs/9.5/static/libpq-envars.html

Andrzej
źródło