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.

Jérôme Verstrynge
źródło
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,
podobne pytanie
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
Jack Douglas
źródło
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.

Alex Jodidio
źródło
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,