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 postgresql
serwerze zainstalowanym w moim systemie jako użytkownik postgres
. Jestem w stanie zalogować się tylko, jeśli podam -h localhost
. Natomiast psql
dokumentacja 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 psql
dokumentacją?
postgresql
12.04
saji89
źródło
źródło
.psqlrc
który określa wartości domyślne - lub po prostu edytuj,pg_hba.conf
aby użyćmd5
uwierzytelniania dlalocal
połączeń (gniazdo unix). Zobacz dokumentację dlapg_hba.conf
ipsql
.Odpowiedzi:
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:
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.conf
pliku.co zwykle powinieneś robić w Ubuntu, gdy jesteś zalogowany jako zwykły użytkownik, ale jesteś administratorem systemu:
źródło
sudo -u postgresql psql
nasudo -u postgres psql
. Próbowałem edytować. Ale nie mógł, ponieważ edycja ma tylko <6 znaków.Jeśli nie podoba Ci się domyślne połączenie przez gniazdo unix, możesz ustawić zmienną środowiskową
PGHOST
. mamw 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źródło