Oznacza to, że Postgres próbuje uwierzytelnić użytkownika przy użyciu protokołu Ident i nie może. Identyfikator działa w następujący sposób:
- Masz rolę bazy danych „foo” w bazie danych „db”
- Twój
pg_hba.conf
plik ( /etc/postgres-something/main
wewnątrz) definiuje „Ident” jako protokół połączenia z bazą danych db
dla użytkowników łączących się z określonych hostów
- Uniksowa nazwa użytkownika nawiązująca połączenie to „foo”
- Serwer Ident uruchomiony na komputerze, z którego użytkownik się łączy, potwierdza, że jego nazwa użytkownika to naprawdę „foo”
Możliwe przyczyny i rozwiązania:
- Na komputerze, z którym próbujesz się połączyć, nie działa serwer tożsamości . Sprawdź to, próbując połączyć się z nim na porcie 113. Jeśli to się nie powiedzie, zainstaluj serwer Ident (np
sudo apt-get install oidentd
.).
- Istnieje serwer Ident, ale nie ma roli bazy danych odpowiadającej nazwie, z którą próbujesz się połączyć (w powyższym przykładzie „foo”). Utwórz go, łącząc się w jakiś sposób z bazą danych z uprawnieniami administratora i zrób to
CREATE ROLE foo
. Alternatywnie dodaj wpis do /etc/postgresql/.../main/pg_ident.conf
.
- Może nazwa użytkownika powłoki nie pasuje do roli bazy danych. Możesz to przetestować , łącząc się z serwerem Ident podczas połączenia i przekazując odpowiednie numery portów.
Może faktycznie chcesz połączyć się hasłem , a nie Ident. Dokonaj pg_hba.conf
odpowiedniej edycji pliku. Na przykład zmień:
host all all 127.0.0.1/32 ident
do
host all all 127.0.0.1/32 md5
/var/lib/psql/data
Nie jestem pewien co do przyczyn, ale to mnie naprawiło:
w
pg_hba.conf
zmień na to:
Dokładny błąd:
Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"
źródło
W CentOS dodaj następujący wiersz do
/var/lib/pgsql/9.3/data/pg_hba.conf
:I skomentuj pozostałe wpisy.
Oczywiście to ustawienie nie jest bezpieczne, ale jeśli po prostu zadzierasz na programistycznej maszynie wirtualnej, takiej jak ja, prawdopodobnie jest w porządku ...
źródło
Jeśli jeszcze tego nie próbowałeś, przejrzyj plik pg_hba.conf. Będzie się nazywać tak jak /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20); być może będziesz musiał użyć „find / -name pg_hba.conf”, aby go zlokalizować.
Na dole pliku zmień wartości „METODA” na „zaufanie” w testach lokalnych (pełne informacje znajdziesz w dokumentacji Postgres). Uruchom ponownie maszynę, aby upewnić się, że wszystko zostało uruchomione w czystości, a nowe parametry zostały odczytane.
Mam nadzieję, że to wyleczy twoje nieszczęścia. Rozwiązało to moje problemy na Fedorze 20 z PostgreSQL 9.3.
źródło
pg_ctl reload
z konsoli lubSELECT pg_reload_conf();
podczas wykonywania SQL jako użytkownik uprzywilejowany.