Hmmm ...
Jeśli możesz połączyć się z nazwą użytkownika i hasłem w pgAdminIII, ale nie możesz się połączyć, psql
to te dwa programy prawdopodobnie łączą się z bazą danych inaczej.
[Jeśli łączysz się z różnymi bazami danych, najpierw spróbuj połączyć się z tą samą bazą danych. Zobacz poniżej.]
Z PostgreSQL: Dokumentacja: 9.3: psql :
Jeśli pominiesz nazwę hosta, psql połączy się przez gniazdo domeny Unix z serwerem na hoście lokalnym lub przez TCP / IP do hosta lokalnego na komputerach, które nie mają gniazd domeny Unix.
Jeśli nie prowadzisz czegoś takiego psql ... -h host_name ...
i korzystasz z Ubuntu, psql
powinieneś łączyć się przez gniazdo domeny Unix, więc PostgreSQL prawdopodobnie nie jest skonfigurowany tak, aby zezwalał jednej z metod uwierzytelniania hasła dla użytkownika postgres .
Możesz to przetestować, uruchamiając:
sudo -u postgres psql
Jeśli powyższe działa, Twój serwer jest prawdopodobnie skonfigurowany do używania uwierzytelniania równorzędnego dla połączeń lokalnych przez Postgres użytkownika , tj. Z prośbą do systemu operacyjnego o nazwę użytkownika, aby potwierdzić, że jesteś postgres .
Więc to prawdopodobnie twój plik pg_hba.conf
Pełna ścieżka do pliku będzie taka jak /etc/postgresql/9.3/main/pg_hba.conf . Możesz go wyświetlić, np sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
.
Jeśli w swoim psql
poleceniu pominąłeś nazwę hosta , powinieneś być w stanie połączyć się, jeśli dodasz następujący wpis do pliku pg_hba.conf :
# Connection type Database User IP addresses Method
local all postgres md5
[Skomentowane linie w pg_hba.conf pliku zaczynają się od #
.]
Jeśli są w tym nazwę hosta w swojej psql
komendzie, zamiast dodać wpis:
# Connection type Database User IP addresses Method
host all postgres 127.0.0.1/32 md5
Musisz wstawić wpis, zanim inne wpisy zostaną dopasowane do twojego połączenia przez psql
. Jeśli masz wątpliwości co do tego, gdzie to umieścić, po prostu umieść go przed pierwszym nieskomentowanym wierszem.
Więcej informacji o pg_hba.conf
Z PostgreSQL: Dokumentacja: 9.3: Plik pg_hba.conf [moja odważna czcionka ]:
Pierwszy rekord z pasującym typem połączenia , adresem klienta , żądaną bazą danych i nazwą użytkownika służy do przeprowadzenia uwierzytelnienia. Nie ma „awaryjnego” lub „zapasowego”: jeśli wybrany zostanie jeden rekord i uwierzytelnienie nie powiedzie się, kolejne rekordy nie będą brane pod uwagę. Jeśli żaden rekord nie pasuje, dostęp jest zabroniony.
Pamiętaj, że rekordy nie są dopasowane w metodzie uwierzytelnienia. Jeśli więc plik pg_hba.conf zawiera następujący wpis:
# Connection type Database User IP addresses Method
local all postgres peer
Wtedy nie będziesz mógł połączyć się przez:
psql -u postgres
Chyba że jeden z tych wpisów znajduje się w pliku pg_hba.conf nad poprzednim wpisem:
# Connection type Database User IP addresses Method
local all postgres md5
local all postgres password # Unencrypted!
local all all md5
local all all password # Unencrypted!