Blog JSystems - uwalniamy wiedzę!

Szukaj

PostgreSQL

Jak połączyć się z bazą przez pgAdmin4 krok po kroku

W skrócie

  • Chcesz połączyć się z bazą przez pgAdmin4, ale rejestracja serwera kończy się błędem albo drzewo baz pozostaje puste.
  • Zwykle brakuje jednego z trzech elementów: nasłuchu bazy na sieci, wpisu w pg_hba.conf albo poprawnych danych połączenia w pgAdmin.
  • Ustaw listen_addresses i pg_hba.conf po stronie serwera, a w pgAdmin podaj właściwy host, port i użytkownika, po czym zarejestruj serwer.

pgAdmin4 to najpopularniejsze narzędzie graficzne do PostgreSQL, ale pierwsze połączenie potrafi zająć więcej czasu niż sama instalacja bazy. Powód jest prosty: pgAdmin tylko łączy się z serwerem, a o tym, czy połączenie w ogóle jest możliwe, decyduje konfiguracja bazy. Przeprowadzimy Cię krok po kroku przez rejestrację serwera i pokażemy, co ustawić po stronie PostgreSQL, żeby drzewo baz się rozwinęło. Temat jest dla każdego, kto zaczyna pracę z pgAdmin4.

Jak to wygląda w praktyce

Instalujesz pgAdmin4, klikasz dodanie nowego serwera, wpisujesz dane i zamiast listy baz dostajesz okno z błędem. Bywa, że komunikat mówi o odrzuceniu połączenia, innym razem o braku wpisu dla Twojego hosta w pliku uprawnień, a jeszcze innym o błędnym haśle. Zdarza się też, że pgAdmin łączy się z bazą na tym samym komputerze bez problemu, ale z innej maszyny w sieci już nie. Wspólny objaw jest jeden: narzędzie działa, lecz serwer nie pojawia się w drzewie z aktywnymi bazami.

Dlaczego tak się dzieje

pgAdmin4 jest tylko klientem. Cała decyzja o tym, czy wpuścić połączenie, zapada po stronie PostgreSQL i przechodzi przez trzy bramki. Pierwsza to nasłuch sieciowy: domyślnie świeżo zainstalowany serwer przyjmuje połączenia tylko z lokalnego komputera, bo parametr listen_addresses jest ustawiony zachowawczo. Jeśli łączysz się z innej maszyny, a serwer nasłuchuje tylko lokalnie, połączenie zostaje odrzucone jeszcze zanim dojdzie do sprawdzania hasła. Druga bramka to plik pg_hba.conf, w którym opisane jest, kto, z jakiego adresu, do której bazy i jaką metodą może się uwierzytelnić. Brak pasującego wpisu daje komunikat o braku wpisu dla hosta. Trzecia bramka to samo uwierzytelnienie, czyli poprawny użytkownik i hasło zgodne z metodą wskazaną w pg_hba.conf. Do tego dochodzą oczywiste drobiazgi po stronie pgAdmin: właściwy adres hosta, port, na którym działa baza, oraz nazwa użytkownika. Jeśli którakolwiek bramka jest zamknięta, drzewo baz pozostanie puste.

Jak to rozwiązać krok po kroku

  1. Jeśli łączysz się z innego komputera niż serwer, ustaw w pliku konfiguracyjnym bazy nasłuch na właściwym adresie, na przykład listen_addresses = '*' na maszynie, którą kontrolujesz, i wykonaj restart, bo ten parametr wymaga restartu.
  2. Dodaj do pliku pg_hba.conf wiersz opisujący Twoje połączenie: rodzaj host, nazwę bazy, użytkownika, adres źródłowy w postaci podsieci oraz metodę uwierzytelniania, typowo scram-sha-256. Po zmianie przeładuj konfigurację, bo pg_hba.conf wczytuje się przez reload.
  3. Upewnij się, że użytkownik, którego chcesz użyć, istnieje i ma ustawione hasło. Bez hasła metoda oparta na haśle nie zadziała.
  4. W pgAdmin4 kliknij rejestrację serwera i na karcie z połączeniem podaj adres hosta bazy, port, na którym nasłuchuje, oraz nazwę bazy startowej i użytkownika.
  5. Wpisz hasło i, jeśli chcesz, zaznacz jego zapamiętanie, żeby nie podawać go za każdym razem. Zatwierdź, a pgAdmin spróbuje się połączyć.
  6. Gdy dostaniesz błąd, przeczytaj go dosłownie: odrzucone połączenie kieruje Cię do nasłuchu i zapory, brak wpisu dla hosta do pg_hba.conf, a błędne hasło do danych użytkownika. Napraw dokładnie tę bramkę, którą wskazuje komunikat.

Jak sprawdzić, że zadziałało

Połączenie działa, gdy w drzewie po lewej stronie serwer się rozwija i widzisz pod nim listę baz danych. Otwórz narzędzie zapytań i wykonaj proste SELECT version();, żeby potwierdzić, że pgAdmin rzeczywiście rozmawia z serwerem, a nie tylko pokazuje zapamiętany stan. Możesz też sprawdzić bieżącą sesję zapytaniem SELECT current_user, inet_server_addr();, które pokaże, jakim użytkownikiem jesteś zalogowany i pod jakim adresem odpowiada serwer. Jeśli zapytania zwracają wyniki, wszystkie trzy bramki są otwarte, a konfiguracja jest poprawna.

Wróć do listy: 100 najczęstszych pytań i problemów z PostgreSQL

Szkolenie Administracja, replikacja i tuning baz danych PostgreSQL

Sprawdź szkolenie: Administracja, replikacja i tuning baz danych PostgreSQL

To szkolenie może być dofinansowane z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Szkolenie Zaawansowana administracja PostgreSQL - HA, DR, monitoring, skalowanie

Sprawdź szkolenie: Zaawansowana administracja PostgreSQL (HA, DR, monitoring, skalowanie)

To szkolenie może być dofinansowane z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Dlaczego pgAdmin4 łączy się lokalnie, ale nie z innego komputera?
Bo świeżo zainstalowany PostgreSQL domyślnie nasłuchuje tylko na lokalnym komputerze, a parametr listen_addresses jest ustawiony zachowawczo. Połączenie z innej maszyny zostaje odrzucone, zanim dojdzie do sprawdzania hasła. Aby wpuścić ruch z sieci na serwerze, który kontrolujesz, ustaw listen_addresses na właściwy adres i wykonaj restart, bo ten parametr wymaga restartu.
Co oznacza w pgAdmin błąd o braku wpisu dla hosta?
To komunikat z pliku pg_hba.conf, który mówi, że dla Twojego typu połączenia, adresu, bazy i użytkownika nie ma pasującego wiersza pozwalającego się uwierzytelnić. Dodaj wiersz opisujący Twoje połączenie, podając rodzaj host, nazwę bazy, użytkownika, adres źródłowy jako podsieć i metodę, typowo scram-sha-256. Po zmianie przeładuj konfigurację, bo pg_hba.conf wczytuje się przez reload.
Jakie dane wpisać przy rejestracji serwera w pgAdmin4?
Na karcie połączenia podaj adres hosta bazy, port, na którym nasłuchuje serwer, nazwę bazy startowej oraz użytkownika i jego hasło. Adres i port muszą wskazywać działający serwer, a użytkownik musi istnieć i mieć ustawione hasło, jeśli metoda uwierzytelniania jest hasłowa. Możesz zaznaczyć zapamiętanie hasła, żeby nie podawać go przy każdym połączeniu.
Jak potwierdzić, że pgAdmin naprawdę rozmawia z serwerem?
Po udanym połączeniu serwer rozwija się w drzewie i widać pod nim listę baz danych. Dla pewności otwórz narzędzie zapytań i wykonaj SELECT version, a następnie SELECT current_user, aby zobaczyć wersję serwera i rolę, którą jesteś zalogowany. Jeśli zapytania zwracają wyniki, wszystkie bramki, czyli nasłuch, pg_hba.conf i uwierzytelnienie, są otwarte.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...