Zainstalowałem PostgreSQL i pgAdminIII na moim Ubuntu Karmic.
Jestem w stanie z powodzeniem korzystać z pgAdminIII (tj. Połączyć się / zalogować), jednak gdy próbuję zalogować się do serwera przy użyciu tej samej nazwy użytkownika / pwd w wierszu poleceń (używając psql), pojawia się błąd:
psql: FATAL: Ident authentication failed for user "postgres"
Czy ktoś teraz jak rozwiązać ten problem?
postgresql
morficzny
źródło
źródło
Odpowiedzi:
Czy ustawiłeś odpowiednie ustawienia w pg_hba.conf?
Zobacz https://help.ubuntu.com/stable/serverguide/postgresql.html jak to zrobić.
źródło
Poniższe kroki działają w przypadku nowej instalacji Postgres 9.1 na Ubuntu 12.04. (Pracował także dla postgres 9.3.9 na Ubuntu 14.04.)
Domyślnie postgres tworzy użytkownika o nazwie „postgres”. Logujemy się jako ona i dajemy jej hasło.
Wyloguj
psql
się, wpisując\q
lubctrl+d
. Następnie łączymy się jako „postgres”. Ta-h localhost
część jest ważna : mówipsql
klientowi, że chcemy się połączyć za pomocą połączenia TCP (który jest skonfigurowany do uwierzytelniania za pomocą hasła), a nie przez połączenie PEER (które nie dba o hasło).źródło
PGHOST=localhost
, nie musisz za-h
każdym razem określać opcji. Działa to również z innymipg_*
poleceniami, takimi jakpg_dump
.Edycja pliku
/etc/postgresql/8.4/main/pg_hba.conf
i zastąpićident
albopeer
przez jednąmd5
lubtrust
, w zależności od tego, czy chcesz, aby poprosić o hasło na swoim komputerze, czy nie. Następnie ponownie załaduj plik konfiguracyjny za pomocą:źródło
restart
zadziałało tylko dla mnie, a niereload
--- po zmianach na/etc/postgresql/9.5/main/pg_hba.conf
(zmianapeer
natrust
).Otrzymujesz ten błąd, ponieważ nie udaje Ci się uwierzytelnić klienta. Na podstawie komunikatu o błędzie prawdopodobnie masz domyślną konfigurację Postgres, która ustawia metodę uwierzytelniania klienta na „IDENT” dla wszystkich połączeń PostgreSQL.
Zdecydowanie powinieneś przeczytać sekcję 19.1 Uwierzytelnianie klienta w podręczniku PostgreSQL, aby lepiej zrozumieć dostępne ustawienia uwierzytelniania (dla każdego rekordu w pg_hba.conf ), ale oto odpowiedni fragment, który pomaga rozwiązać problem (z wersji 9.5 instrukcji ):
Więc ... aby rozwiązać występujący problem, możesz wykonać jedną z następujących czynności:
Zmień metody uwierzytelniania zdefiniowane w
pg_hba.conf
pliku natrust
,md5
lubpassword
(w zależności od potrzeb w zakresie bezpieczeństwa i prostoty) dla rekordów połączeń lokalnych, które tam zdefiniowałeś.Zaktualizuj,
pg_ident.conf
aby zmapować użytkowników systemu operacyjnego na użytkowników PostgreSQL i nadać im odpowiednie uprawnienia dostępu, w zależności od potrzeb.Pozostaw ustawienia IDENT w spokoju i utwórz użytkowników w bazie danych dla każdego użytkownika systemu operacyjnego, któremu chcesz przyznać dostęp. Jeśli użytkownik jest już uwierzytelniony przez system operacyjny i zalogowany, PostgreSQL nie będzie wymagał dalszego uwierzytelnienia i zapewni mu dostęp w oparciu o wszelkie uprawnienia (role) przypisane mu w bazie danych. To jest konfiguracja domyślna.
Uwaga: Lokalizacja
pg_hba.conf
ipg_ident.conf
zależy od systemu operacyjnego.źródło
/etc/postgresql/9.6/main/pg_hba.conf
.Po prostu dodanie tego
-h localhost
fragmentu było moim zadaniemźródło
this_computer = 'http://localhost'
Możesz ustawić zmienną środowiskową
PGHOST=localhost
:źródło
W przypadku, gdy żadne z powyższych nie działa dla ciebie:
wykonałem sporo instalacji Postgres, ale dzisiaj zostałem zmiksowany w systemie RedHat 6.5 (instalowanie Postgres 9.3). Moja typowa konfiguracja hba.conf, którą pokazuje Aron powyżej, nie działała. Okazało się, że mój system używa IPV6 i ignoruje konfigurację IPV4. Dodanie linii:
pozwolił mi się zalogować.
źródło
Ze wszystkich powyższych odpowiedzi nic nie działało dla mnie. Musiałem ręcznie zmienić hasło użytkownika w bazie danych i nagle zadziałało.
Użyłem następujących ustawień:
pg_hba.conf
Połączenie zakończyło się pomyślnie dla następującego polecenia:
źródło
Odkryłem, że musiałem zainstalować serwer tożsamości, który nasłuchuje na porcie 113.
A potem ident zadziałało.
źródło
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 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 :[Skomentowane linie w pg_hba.conf pliku zaczynają się od
#
.]Jeśli są w tym nazwę hosta w swojej
psql
komendzie, zamiast dodać wpis: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 ]:
Pamiętaj, że rekordy nie są dopasowane w metodzie uwierzytelnienia. Jeśli więc plik pg_hba.conf zawiera następujący wpis:
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:
źródło
W moim przypadku rozwiązanie tutaj: (dla osób zainteresowanych) zaloguj się do postgres:
pozdrowienia
źródło
Problemem jest nadal plik pg_hba.conf. Ta linia: możesz znaleźć ten plik w / etc / postgres / varion / main
Są to krótkie opisy obu opcji zgodnie z oficjalnymi dokumentami PostgreSQL dotyczącymi metod uwierzytelniania.
Uwierzytelnianie rówieśnicze
Metoda uwierzytelniania równorzędnego polega na uzyskaniu nazwy użytkownika systemu operacyjnego klienta z jądra i użyciu jej jako dozwolonej nazwy użytkownika bazy danych (z opcjonalnym odwzorowaniem nazwy użytkownika). Ta metoda jest obsługiwana tylko w połączeniach lokalnych.
Uwierzytelnianie za pomocą hasła
Metody uwierzytelniania oparte na haśle to md5 i hasło. Metody te działają podobnie, z wyjątkiem sposobu, w jaki hasło jest wysyłane przez połączenie, a mianowicie odpowiednio skrótu MD5 i tekstu jawnego.
Jeśli martwisz się atakami typu „wąchanie” haseł, preferowane jest md5. W miarę możliwości należy zawsze unikać zwykłego hasła. Jednak md5 nie może być używany z funkcją db_user_namespace. Jeśli połączenie jest chronione przez szyfrowanie SSL, hasło może być bezpiecznie używane (chociaż uwierzytelnianie certyfikatu SSL może być lepszym wyborem, jeśli zależy od korzystania z SSL).
Po zmianie tego pliku nie zapomnij zrestartować serwera PostgreSQL. Jeśli korzystasz z Linuksa, byłoby to możliwe
sudo service postgresql restart.
źródło
Dla fedora26 i postgres9.6
Najpierw zaloguj się jako użytkownik root, a następnie wpisz psql, wykonując następujące polecenia
następnie
w
psql
znajdź położenie pliku hba ==> oznaczapg_hba.conf
w pliku
pg_hba.conf
zmień dostęp użytkownika do tegoźródło
moim rozwiązaniem w PostgreSQL 9.3 na Mac OSX w powłoce bash było
sudo
przejście do folderu danych, a następnie dodanie niezbędnych wierszy dopg_hba.conf
pliku, aby wszyscy użytkownicy mogli być zaufani i mogli się zalogować. Tak właśnie zrobiłem :źródło
Jeśli zrobiłeś to wszystko i nadal nie działa, sprawdź datę ważności dla tego użytkownika:
Uwierzytelnianie hasłem Postgres kończy się niepowodzeniem
źródło
Spędziłem więcej czasu na rozwiązywaniu tego błędu, który chcę przyznać.
Kolejność konfiguracji uwierzytelniania w pg_hba.conf jest właściwa w twoim przypadku. Domyślny plik konfiguracyjny zawiera kilka wierszy instalacji waniliowej. Te wartości domyślne mogą odpowiadać warunkom prób uwierzytelnienia, powodując niepowodzenie uwierzytelnienia. Nie powiedzie się niezależnie od dodatkowej konfiguracji dodanej na końcu pliku .conf.
Aby sprawdzić, który wiersz konfiguracji jest używany, sprawdź domyślny plik dziennika komunikatów. Możesz zobaczyć coś takiego
Okazuje się, że ta domyślna linia powoduje odrzucenie.
spróbuj to skomentować.
źródło
Jeden hack wokół tego jest edycja pg_hba.conf
Tymczasowo
W tym momencie jesteś skończony. Dla bezpieczeństwa, idź i
następnie wróć i ustaw pg_hba.conf z powrotem na
źródło
Miałem podobny problem i naprawiłem go w pg_hba.conf podczas usuwania wszystkich metod ident , nawet dla adresu IP6 (pomimo tego, że mam tylko IP4 na komputerze).
źródło
Miałem ten sam problem po wykonaniu następujących czynności: Instalacja PostgreSQL dla rozwoju Railsów w Ubuntu 12.04
Próbowałem innych odpowiedzi, ale wszystko, co musiałem zrobić, to: „config / database.yml”
źródło
Jeśli używasz go w CentOS, może być konieczne ponowne załadowanie postgres po wykonaniu powyższych rozwiązań:
źródło
postgresql
systemctl status | grep postgres
Musiałem ponownie zainstalować pdAdmin, aby rozwiązać ten problem
źródło
W systemie Windows, jeśli nie chcesz edytować pb_gba.conf, tj. Pozostaw metodę MD5 (domyślnie), utwórz nowego użytkownika, uruchamiając to zapytanie w narzędziu do wysyłania zapytań w PGadmin
następnie w cmd
gdzie dbname to twój db w postgresql
źródło
To zadziałało dla mnie: http://tecadmin.net/fatal-ident-authentication-failed-for-user-postgres/#
źródło