PgAdmin III - Jak połączyć się z bazą danych, gdy hasło jest puste?


21

Zainstalowałem PostgreSQL 9.1 na swoim komputerze (Win 7). Mam małą aplikację Java, która pomyślnie się z nią łączy za pomocą login=sai password="". Połączenie działa.

Odmawia się go jednak samego PgAdmin III. Dostaję:

Error connecting to the server: fe_sendauth: no password supplied

Jak połączyć się z moją bazą danych za pomocą PgAdmin III z pustym hasłem?

EDYTOWAĆ

To tylko test, a nie kod produkcyjny.


Nie wiem na pewno, ale łatwo sobie wyobrazić, że PgAdmin tego nie obsługuje.
— Peter Eisentraut,

czy Twoja aplikacja Java działa na tym samym kliencie co pgAdmin?
— Jack Douglas,

Odpowiedzi:


10

Mogę połączyć się z moją instancją postgres z pgAdmin III bez hasła dla dowolnego użytkownika, w tym superużytkowników takich jak postgres.

Ponieważ łączysz się poprawnie z innym klientem, nie ma powodu, aby nie być w stanie połączyć się z pgAdmin, jeśli są one na tej samej stacji roboczej - chyba że niektóre reguły zapory na samym kliencie zezwalają na jeden program, ale nie na inny.

Jeśli problem jest specyficzny dla tego klienta, może być konieczna zmiana jednego lub więcej z następujących elementów:

  • pg_hba.conf
host sa wszystkie 192.168.0.nnn / 32 trust
  • postgresql.conf
listen_addresses = '*'
  • zapora ogniowa na serwerze postgres, np. iptables:
-A WEJŚCIE -s 192.168.0.nnn -m stan - stan NOWY -j AKCEPTUJ

Ale polecam, żebyś tego nie robił. Podręcznik podaje następujące powody:

Uwierzytelnianie zaufania jest odpowiednie tylko dla połączeń TCP / IP, jeśli ufasz każdemu użytkownikowi na każdym komputerze, który może połączyć się z serwerem za pomocą wierszy pg_hba.conf, które określają zaufanie. Rzadko uzasadnione jest używanie zaufania do jakichkolwiek połączeń TCP / IP innych niż te z hosta lokalnego (127.0.0.1).

Zamiast tego rozważ:

  • za pomocą hasła i identyfikacji md5
  • tunelowanie portu 5432 przez ssh

31

Znalazłem tę odpowiedź gdzie indziej.

Jeśli twoja baza danych znajduje się na hoście lokalnym, spróbuj pozostawić pole hosta puste w połączeniu, zamiast używać „localhost” lub „127.0.0.1 ″. To mówi PgAdminowi, aby łączył się przez lokalne gniazdo unix zamiast TCP.


Dodajmy, że pierwotne pytanie dotyczyło systemu Windows.
— dezso,

3
Ach, to było dokładnie to. Pozostawienie pustego hosta działało.
— podstawowe

Nie możesz pozostawić tego pola pustego, jest wymagane.
— Athlan

Wygląda na to, że pozostawienie pola hosta pustego działa tylko wtedy, gdy masz rolę w pg nazwaną jako nazwa użytkownika systemu (w systemie Linux). W przeciwnym razie wydaje mi się, że potrzebne są mapy użytkowników.
— a1an

Doskonały! Dzięki nowej instalacji postgresql i pgadmin, zmiana pg_hba.confna powiedzieć trustzamiast peerw tym wierszu - local all postgres trusti pozostawienie pustych pól haseł i haseł w pgadmin sprawia, że ​​wszystko działa! Chciałbym, aby pgadmin dodał pole wyboru, aby przełączyć się na gniazda zamiast tego trudnego do wykrycia interfejsu użytkownika.
— Anupam Jain,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.