PostgreSQL - Przewodnik na start
PostgreSQL to wydajna, otwartoźródłowa relacyjna baza danych znana z niezawodności, integralności danych oraz zaawansowanych funkcji, takich jak obsługa JSON, wyszukiwanie pełnotekstowe i możliwość rozszerzania. Ten serwer zawiera PostgreSQL 16 w pełni skonfigurowany z hasłem administratora podanym podczas składania zamówienia. Do zarządzania bazą danych dołączony jest również pgAdmin4 z interfejsem webowym.
Krok 1 – Sprawdź, czy PostgreSQL działa
Adres IP serwera oraz hasło użytkownika root znajdują się w sekcji Server Information na karcie Overview serwera w panelu klienta. pgAdmin4 to internetowe narzędzie do zarządzania PostgreSQL. Otwórz w przeglądarce adres http://your.server.ip/pgadmin4, aby sprawdzić, czy działa.
Logowanie do pgAdmin4:
- Adres e-mail: adres podany podczas składania zamówienia
- Hasło: hasło administratora podane podczas składania zamówienia
Superużytkownik PostgreSQL:
- Nazwa użytkownika: postgres
- Hasło: hasło administratora podane podczas składania zamówienia
Po zalogowaniu do pgAdmin4 dodaj połączenie z serwerem PostgreSQL:
- Kliknij prawym przyciskiem myszy Servers w lewym panelu i wybierz Register > Server.
- W zakładce General wpisz nazwę połączenia (np. „Local”).
- W zakładce Connection ustaw: Host = 127.0.0.1, Port = 5432, Username = postgres, Password = hasło administratora.
- Kliknij Save.
Od tej chwili możesz przeglądać bazy danych, wykonywać zapytania SQL, importować i eksportować dane oraz zarządzać użytkownikami z poziomu interfejsu webowego.
Serwery baz danych nie wymagają publicznego dostępu do Internetu. Dla większego bezpieczeństwa umieść serwer w sieci prywatnej za routerem VyOS i łącz się z PostgreSQL oraz pgAdmin4 przez VPN, używając prywatnego adresu IP serwera.
Krok 2 – Połącz się z PostgreSQL zdalnie
PostgreSQL jest skonfigurowany do przyjmowania połączeń zdalnych. Możesz połączyć się z dowolnej aplikacji lub narzędzia:
psql -h your.server.ip -U postgresParametry połączenia dla graficznych klientów baz danych (pgAdmin Desktop, DBeaver, DataGrip itp.):
| Parametr | Wartość |
|---|---|
| Host | your.server.ip |
| Port | 5432 |
| Nazwa użytkownika | postgres |
| Hasło | Hasło administratora podane podczas zamówienia |
Uwaga: Port 5432 obsługuje protokół PostgreSQL, a nie HTTP, dlatego nie można otworzyć go w przeglądarce. Użyj klienta baz danych lub powyższego polecenia.
Krok 3 – Włącz SSL dla pgAdmin4 (opcjonalnie)
Jeżeli posiadasz domenę wskazującą na ten serwer, możesz włączyć HTTPS dla pgAdmin4 przy użyciu bezpłatnego certyfikatu Let’s Encrypt. Połącz się przez SSH i uruchom:
ssh root@your.server.ip /opt/setup/get-ssl.sh db.yourdomain.comSkrypt sprawdzi poprawność konfiguracji DNS, pobierze certyfikat i automatycznie skonfiguruje Apache do obsługi HTTPS. Po zakończeniu pgAdmin4 będzie dostępny pod adresem https://db.yourdomain.com/pgadmin4.
Uwaga: Przed uruchomieniem skryptu upewnij się, że rekord A domeny wskazuje na adres IP serwera. SSL jest opcjonalny. pgAdmin4 działa również przez HTTP przy dostępie po adresie IP.
Zarządzanie bazą danych
Tworzenie dodatkowych baz danych
Nowe bazy danych możesz tworzyć z poziomu pgAdmin4 lub przez SSH:
sudo -u postgres psql CREATE USER newuser WITH PASSWORD 'strong_password’; CREATE DATABASE newdb OWNER newuser ENCODING 'UTF8′; GRANT ALL PRIVILEGES ON DATABASE newdb TO newuser;Import i eksport danych
Przez pgAdmin4: kliknij prawym przyciskiem myszy wybraną bazę danych i wybierz Backup lub Restore. Obsługiwane są formaty custom, tar, plain oraz directory.
Z poziomu wiersza poleceń:
# Eksport pg_dump -U postgres your_database > backup.sql # Eksport (format custom, skompresowany) pg_dump -U postgres -Fc your_database > backup.dump # Import (SQL) psql -U postgres your_database < backup.sql # Import (format custom) pg_restore -U postgres -d your_database backup.dumpW przypadku dużych baz danych zalecane jest używanie formatu pg_dump -Fc, który zapewnia szybsze wykonywanie kopii zapasowych i mniejsze pliki.
Po instalacji
Fail2Ban – ochrona przed atakami brute-force
Na serwerze jest wstępnie skonfigurowany Fail2Ban, który chroni dostęp SSH przed atakami typu brute-force.
| Reguła | Maksymalna liczba prób | Czas blokady |
|---|---|---|
| SSH | 5 nieudanych logowań | 10 minut |
Przydatne polecenia:
# Sprawdź zablokowane adresy IP fail2ban-client status sshd # Odblokowanie adresu IP fail2ban-client set sshd unbanip 1.2.3.4Jeśli przypadkowo zablokujesz sobie dostęp, połącz się z serwerem przez konsolę VNC w panelu klienta i odblokuj swój adres IP.
Zarządzanie usługami
PostgreSQL i Apache działają jako usługi systemd. Najczęściej używane polecenia:
# Sprawdź status usług systemctl status postgresql systemctl status apache2 # Uruchom ponownie PostgreSQL systemctl restart postgresql # Wyświetl logi PostgreSQL journalctl -u postgresql -n 100Optymalizacja wydajności PostgreSQL
Podczas pierwszego uruchomienia PostgreSQL jest automatycznie dostrajany na podstawie dostępnej pamięci RAM. Aby sprawdzić aktualne ustawienia:
sudo -u postgres psql -c „SHOW shared_buffers; SHOW effective_cache_size; SHOW work_mem;”Aby zmienić ustawienia ręcznie, edytuj plik /etc/postgresql/16/main/conf.d/99-tuning.conf, a następnie uruchom ponownie PostgreSQL:
systemctl restart postgresqlDane dostępowe do serwera
Dane logowania do PostgreSQL oraz pgAdmin4 są zapisane w pliku /root/.pg_credentials.
Wstępna konfiguracja
- Dostęp zdalny: PostgreSQL akceptuje połączenia z dowolnego adresu IP na porcie 5432 (uwierzytelnianie SCRAM-SHA-256)
- shared_buffers: automatycznie ustawione na 25% dostępnej pamięci RAM podczas pierwszego uruchomienia
- effective_cache_size: ustawione na 75% pamięci RAM dla optymalnego planowania zapytań
- Kodowanie: nowe bazy danych są tworzone z kodowaniem UTF-8 (utf8, en_US.UTF-8)
Zainstalowane oprogramowanie
| Komponent | Wersja |
|---|---|
| Ubuntu | 24.04 LTS |
| PostgreSQL | 16 (PGDG APT) |
| Apache | 2.4 |
| pgAdmin4 | Najnowsza (tryb webowy) |
| Certbot | Najnowsza |
| Fail2Ban | 1.0 |
Rozwiązywanie problemów
| Problem | Rozwiązanie |
|---|---|
| Nie można połączyć się z PostgreSQL zdalnie | Sprawdź, czy port 5432 nie jest blokowany przez zaporę. Zweryfikuj, czy listen_addresses = '*’ znajduje się w pliku conf.d/99-custom.conf oraz czy pg_hba.conf zezwala na połączenia z Twojego adresu IP. |
| pgAdmin4 wyświetla błąd logowania | Użyj adresu e-mail oraz hasła administratora podanych podczas składania zamówienia. Dane logowania znajdują się w pliku /root/.pg_credentials. |
| Strona pgAdmin4 nie otwiera się (HTTP 500) | Sprawdź status Apache: systemctl status apache2. Następnie sprawdź logi pgAdmin: /var/log/pgadmin/pgadmin4.log. |
| PostgreSQL nie uruchamia się | Sprawdź logi: journalctl -u postgresql -n 50. Najczęstsze przyczyny to brak wolnego miejsca na dysku (df -h /) lub nieprawidłowa konfiguracja (pg_lsclusters). |
| Zapomniane hasło administratora PostgreSQL | Połącz się przez SSH i sprawdź plik /root/.pg_credentials. |
| Adres IP został zablokowany przez Fail2Ban | Połącz się z serwerem przez konsolę VNC w panelu klienta i odblokuj swój adres IP. |
| Zapomniane hasło użytkownika root | Użyj konsoli VNC w panelu klienta, aby zresetować hasło. |