Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

PostgreSQL na hostingu i VPS — instalacja, konfiguracja i bezpieczeństwo

Opublikowano: 8 kwietnia 2026 · Kategoria: Bazy danych

PostgreSQL to zaawansowana baza danych open-source — wybierana przez aplikacje Django, Ruby on Rails i nowoczesne SaaS, które potrzebują JSONB, pełnotekstowego wyszukiwania i złożonych typów danych. Na hostingach współdzielonych w Polsce PostgreSQL jest rzadkością — zwykle wymaga VPS. Ten artykuł opisuje jak go zainstalować, zabezpieczyć i używać na VPS z Ubuntu.

Instalacja PostgreSQL na Ubuntu/Debian

# Instalacja z oficjalnego repozytorium PostgreSQL (nowsza wersja)
sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-16 -y

# Lub szybciej z Ubuntu repo (starszą wersją):
sudo apt install postgresql postgresql-contrib -y

# Sprawdź wersję i status
psql --version
sudo systemctl status postgresql

Pierwsze kroki — tworzenie bazy i użytkownika

# Przełącz się na konto postgres
sudo -u postgres psql

-- W konsoli psql:
-- Utwórz użytkownika aplikacji (NIE używaj superuser dla aplikacji)
CREATE USER myapp_user WITH PASSWORD 'silne_haslo_tu';

-- Utwórz bazę danych
CREATE DATABASE myapp_db OWNER myapp_user;

-- Nadaj uprawnienia
GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp_user;

-- Wyjdź
\q

# Test połączenia
psql -h localhost -U myapp_user -d myapp_db

Konfiguracja bezpieczeństwa

Dwa kluczowe pliki konfiguracyjne: postgresql.conf i pg_hba.conf:

# Znajdź lokalizację plików konfiguracyjnych
sudo -u postgres psql -c "SHOW config_file;"
sudo -u postgres psql -c "SHOW hba_file;"

# postgresql.conf — ogranicz nasłuchiwanie do localhost
sudo nano /etc/postgresql/16/main/postgresql.conf
# Zmień:
# listen_addresses = 'localhost'   # tylko localhost, NIE '*'
# port = 5432

# pg_hba.conf — metody uwierzytelniania
sudo nano /etc/postgresql/16/main/pg_hba.conf
# Linie powinny wyglądać tak (scram-sha-256 zamiast trust):
# local   all   postgres   peer
# local   all   all        scram-sha-256
# host    all   all        127.0.0.1/32   scram-sha-256
# host    all   all        ::1/128        scram-sha-256

# Restart po zmianach
sudo systemctl restart postgresql

Połączenie przez SSH tunnel (bezpieczny zdalny dostęp)

# Uruchom tunel SSH (na lokalnym komputerze)
# Mapuje lokalny port 5433 → zdalny localhost:5432
ssh -L 5433:localhost:5432 user@twoj_serwer_ip -N

# W osobnym terminalu — połącz się lokalnie:
psql -h localhost -p 5433 -U myapp_user -d myapp_db

# W pgAdmin (GUI):
# Host: localhost, Port: 5433 (przy aktywnym tunelu)

# Stały tunel w tle (z ~./ssh/config)
# Host mydb-tunnel
#   HostName twoj_serwer_ip
#   User twoj_user
#   LocalForward 5433 localhost:5432
#   IdentityFile ~/.ssh/id_ed25519

Podstawowe polecenia psql

-- Lista baz danych
\l

-- Lista tabel w bieżącej bazie
\dt

-- Lista użytkowników
\du

-- Połącz z inną bazą
\c myapp_db

-- Opis tabeli
\d nazwa_tabeli

-- Wykonaj zapytanie z pliku
\i /path/to/query.sql

-- Historia poleceń
\s

-- Wyjście
\q

Backup i restore

# Backup jednej bazy
pg_dump -U myapp_user -h localhost myapp_db > backup-$(date +%Y%m%d).sql

# Backup z kompresją
pg_dump -U myapp_user myapp_db | gzip > backup-$(date +%Y%m%d).sql.gz

# Backup wszystkich baz (jako root postgres)
sudo -u postgres pg_dumpall > all-databases-$(date +%Y%m%d).sql

# Restore
psql -U myapp_user -d myapp_db < backup-20260409.sql
# lub z gz:
gunzip -c backup-20260409.sql.gz | psql -U myapp_user -d myapp_db

# Cron — codziennie o 3:00
# 0 3 * * * pg_dump -U myapp_user myapp_db | gzip > /backup/pg-$(date +\%Y\%m\%d).sql.gz
Cecha PostgreSQL MySQL/MariaDB
Dostępność na hostingu współdzielonym Rzadko (głównie VPS) Powszechna (prawie wszędzie)
JSONB (natywne JSON) Tak (indeksowalne) JSON (mniej wydajny)
WordPress Nieoficjalnie (plugin) Natywna obsługa
Django, FastAPI Preferowany Obsługiwany
Złożone zapytania SQL Lepszy optymalizator Dobry dla prostszych zapytań
Pełnotekstowe wyszukiwanie Wbudowane, zaawansowane FULLTEXT (ograniczone)

Najczęstsze pytania

Czy PostgreSQL jest dostępny na hostingu współdzielonym? +
Większość polskich hostingów współdzielonych (LH.pl, CyberFolks, home.pl) oferuje wyłącznie MySQL/MariaDB. PostgreSQL na hostingu współdzielonym jest rzadkością — częściej dostępny na planach VPS lub dedykowanych. Na VPS samodzielnie instalujesz PostgreSQL: sudo apt install postgresql. Wyjątki: niektóre hostingi premium oferują PostgreSQL jako opcję dodatkową.
Jak zabezpieczyć PostgreSQL na VPS? +
Podstawowe zabezpieczenia: (1) Zmień nasłuchiwanie na localhost w postgresql.conf: listen_addresses = "localhost", (2) Ogranicz dostęp w pg_hba.conf: używaj "scram-sha-256" zamiast "trust", (3) Nie używaj konta postgres bezpośrednio — utwórz dedykowane konto dla aplikacji, (4) Odblokuj port 5432 w UFW TYLKO dla konkretnego IP: ufw allow from 10.0.0.1 to any port 5432.
Jak połączyć się z PostgreSQL przez SSH tunnel? +
Bezpieczne połączenie bez otwierania portu 5432 publicznie: ssh -L 5433:localhost:5432 user@server_ip -N. Następnie lokalnie: psql -h localhost -p 5433 -U postgres. Parametr -L tworzy tunel: lokalny port 5433 → zdalny localhost:5432. Połączenie jest szyfrowane przez SSH. W pgAdmin: Host=localhost, Port=5433, przy aktywnym tunelu SSH.
Jaka jest różnica między PostgreSQL a MySQL na hostingu? +
MySQL/MariaDB: powszechny na hostingach współdzielonych, prosty w obsłudze, dobry dla WordPress i PHP. PostgreSQL: zaawansowane typy danych (JSONB, arrays, hstore), lepszy dla złożonych zapytań i analityki, wymagany przez niektóre frameworki (Django domyślnie preferuje PostgreSQL, Rails dobrze działa z oboma). Dla aplikacji Python/Django i nowoczesnych SaaS PostgreSQL jest często lepszym wyborem mimo mniejszej dostępności na hostingach.

Szybkie przejście do ofert związanych z tym tematem

Wybraliśmy oferty i strony z kodami rabatowymi, które najczęściej pasują do tego scenariusza użycia.