PostgreSQL telepítése és konfigurálása Linux környezetben

Üdvözöljük a PostgreSQL világában! Ha valaha is szerette volna elsajátítani az egyik legmegbízhatóbb, legfejlettebb és leginkább funkciókban gazdag nyílt forráskódú adatbázis-kezelő rendszer telepítését és konfigurálását, akkor jó helyen jár. Ez az átfogó útmutató lépésről lépésre végigvezeti Önt a folyamaton, különös tekintettel a Linux környezetre. Akár fejlesztő, akár rendszeradminisztrátor, akár egyszerűen csak érdeklődik az adatbázisok iránt, ez a cikk segíteni fog Önnek abban, hogy magabiztosan kezelje a PostgreSQL-t.

Mi az a PostgreSQL és miért válassza?

A PostgreSQL, gyakran csak Postgres néven emlegetve, egy objektum-relációs adatbázis-kezelő rendszer (ORDBMS), amely a rugalmasságáról, adat integritásáról és fejlett funkcióiról ismert. Több mint 30 éves aktív fejlesztéssel a PostgreSQL az egyik legstabilabb és legmegbízhatóbb adatbázis a piacon.

Miért érdemes a PostgreSQL-t választani?

  • Robusztusság és megbízhatóság: Kiválóan kezeli a komplex lekérdezéseket és nagy adatmennyiségeket, miközben garantálja az adatok integritását és konzisztenciáját.
  • Nyílt forráskódú: Ingyenesen használható, módosítható és terjeszthető. Erős közösségi támogatással rendelkezik.
  • Skálázhatóság: Képes kezelni mind a kis projekteket, mind a nagyvállalati szintű, milliárd rekordos adatbázisokat.
  • Funkciókban gazdag: Támogatja az ACID tranzakciókat, külföldi kulcsokat, triggereket, nézeteket, tárolt eljárásokat, valamint számos fejlett adattípust (pl. JSON, GIS).
  • Kiterjeszthetőség: Lehetővé teszi egyedi adattípusok, funkciók és operátorok hozzáadását.

Előkészületek a telepítés előtt

Mielőtt belevágnánk a PostgreSQL telepítésébe, érdemes néhány előkészületet megtenni a zökkenőmentes folyamat érdekében:

  • Rendszerfrissítés: Mindig javasolt a rendszer csomagjainak frissítése a legújabb verziókra. Ezáltal elkerülhetjük a kompatibilitási problémákat és kihasználhatjuk a legújabb biztonsági javításokat.
  • Superuser jogosultságok: Győződjön meg róla, hogy rendelkezik sudo jogosultságokkal, mivel a telepítés és konfigurálás során sok parancsot root felhasználóként kell futtatni.
  • Linux disztribúció ismerete: Az alábbi útmutató a két legelterjedtebb Linux disztribúciócsaládra koncentrál:
    • Debian/Ubuntu alapú rendszerek (apt csomagkezelő)
    • Red Hat/CentOS/Fedora alapú rendszerek (yum vagy dnf csomagkezelő)

    A parancsok disztribúciótól függően eltérhetnek!

Rendszerfrissítés (példák)

# Debian/Ubuntu alapú rendszerek
sudo apt update
sudo apt upgrade

# Red Hat/CentOS/Fedora alapú rendszerek
sudo dnf update  # Fedora/RHEL 8+
# vagy
sudo yum update  # CentOS 7/RHEL 7

PostgreSQL telepítése Linuxon

Most, hogy felkészültünk, kezdhetjük a PostgreSQL telepítését. Két fő megközelítést mutatunk be: a disztribúciók hivatalos csomagkezelőjével történő telepítést, ami a leggyakoribb és legegyszerűbb módszer, valamint egy rövid említést a hivatalos PostgreSQL tárolóból történő telepítésről, amely frissebb verziókat biztosíthat.

1. Telepítés a disztribúció hivatalos tárolójából (ajánlott)

Ez a módszer a legegyszerűbb és a legtöbb felhasználó számára megfelelő. A csomagok teszteltek és jól integrálódnak a rendszerrel.

Debian/Ubuntu alapú rendszereken

A Debian és Ubuntu rendszereken a postgresql csomag tartalmazza a szervert, a kliens eszközöket és az alapvető segédprogramokat. A postgresql-contrib csomag további modulokat és kiegészítőket biztosít.

sudo apt install postgresql postgresql-contrib

A telepítés befejezése után a PostgreSQL szolgáltatás automatikusan elindul, és engedélyezésre kerül a rendszerindításkor. Ellenőrizze az állapotát:

sudo systemctl status postgresql

Ekkor valami hasonlót kell látnia:

● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since ...
     ...

Red Hat/CentOS/Fedora alapú rendszereken

Ezeken a rendszereken a csomagok neve hasonló, de a telepítési és inicializálási lépések kissé eltérőek lehetnek.

Fedora/RHEL 8+
sudo dnf install postgresql-server postgresql-contrib
CentOS 7/RHEL 7
sudo yum install postgresql-server postgresql-contrib

Fontos lépés CentOS/RHEL rendszereken: A telepítés után inicializálni kell az adatbázis-klasztert, mielőtt a szolgáltatás elindulhatna. Ez létrehozza az alapvető adatbázis-fájlokat.

sudo postgresql-setup initdb

Ezután indítsa el és engedélyezze a PostgreSQL szolgáltatást:

sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo systemctl status postgresql

2. Telepítés a hivatalos PostgreSQL tárolóból (opcionális, haladóknak)

Ha a disztribúció hivatalos tárolójában található PostgreSQL verzió túl régi, vagy egy specifikusabb verzióra van szüksége, hozzáadhatja a hivatalos PostgreSQL APT vagy YUM tárolót. Ez a módszer frissebb verziókat kínál, de a lépések disztribúciónként eltérőek és részletesebbek.

Például Ubuntu/Debian esetén:

# Adjuk hozzá a GPG kulcsot
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Adjuk hozzá a tárolót (pl. Ubuntu 22.04 "Jammy" esetén, PostgreSQL 15-höz)
echo "deb http://apt.postgresql.org/pub/repos/apt/ jammy-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

# Frissítsük a csomaglistát és telepítsük a kívánt verziót
sudo apt update
sudo apt install postgresql-15 postgresql-client-15

A fenti parancsok csak példák, mindig ellenőrizze a hivatalos PostgreSQL weboldalt a legfrissebb és disztribúcióspecifikus utasításokért!

Alapvető konfiguráció és hozzáférés

A PostgreSQL telepítése után az alapértelmezett beállításokkal egy helyi, csak a szerverről elérhető adatbázist kapunk. Ahhoz, hogy produktívan használhassuk, konfigurálnunk kell a felhasználói hozzáférést és a hálózati beállításokat.

PostgreSQL felhasználók és szerepkörök

A PostgreSQL alapértelmezetten létrehoz egy postgres nevű felhasználót, amely megegyezik a Linux rendszer postgres felhasználójával. Ez a felhasználó a PostgreSQL rendszergazdája (superuser).

Bejelentkezés a postgres felhasználóval

A leggyakoribb módszer a postgres rendszerfelhasználóvá való váltás, majd a psql parancs indítása:

sudo -i -u postgres
psql

Vagy egyetlen parancsban:

sudo -u postgres psql

Ezután a psql parancssori felületen fogja magát találni. Lépjen ki a q paranccsal.

Jelszó beállítása a postgres felhasználónak

Biztonsági okokból és távoli hozzáféréshez javasolt jelszót beállítani a postgres adatbázis-felhasználónak.

-- Először lépjen be a psql-be a fentiek szerint
ALTER USER postgres WITH PASSWORD 'egy_nagyon_eros_jelszo';

Fontos: Cserélje ki az 'egy_nagyon_eros_jelszo' szöveget egy valóban erős, egyedi jelszóra!

Új felhasználó és adatbázis létrehozása

Nem javasolt mindig a postgres felhasználót használni a projektekhez. Hozzon létre saját felhasználókat és adatbázisokat.

-- Lépjen be a psql-be a postgres felhasználóval
CREATE USER uj_felhasznalo WITH PASSWORD 'felhasznalo_jelszava';
CREATE DATABASE uj_adatbazis OWNER uj_felhasznalo;

A CREATE USER parancs számos opciót tartalmazhat (pl. SUPERUSER, CREATEDB, CREATEUSER, LOGIN). Alapértelmezés szerint a LOGIN engedélyezett.

Most már az új felhasználóval is be tud lépni az új adatbázisba:

psql -U uj_felhasznalo -d uj_adatbazis

Ha jelszóval védett felhasználót használ, a psql kérni fogja a jelszót.

PostgreSQL hálózati konfigurációja

Alapértelmezetten a PostgreSQL csak a localhost (127.0.0.1) címről fogad kapcsolatokat. Ahhoz, hogy más gépekről, például fejlesztői munkaállomásokról vagy más szerverekről is elérhetővé tegye, módosítania kell két konfigurációs fájlt:

  • postgresql.conf: Itt állítjuk be, hogy mely IP-címeken figyeljen a szerver.
  • pg_hba.conf: Itt definiáljuk a hozzáférési szabályokat (Host-Based Authentication).

A konfigurációs fájlok helye disztribúciótól és PostgreSQL verziótól függően eltérhet. Gyakori helyek:

  • Debian/Ubuntu: /etc/postgresql/{verzió}/main/
  • CentOS/RHEL/Fedora: /var/lib/pgsql/{verzió}/data/ vagy /etc/postgresql/{verzió}/

A pontos útvonalat megtudhatja a psql-ben a SHOW config_file; és SHOW hba_file; parancsokkal.

1. postgresql.conf szerkesztése

Nyissa meg a postgresql.conf fájlt egy szövegszerkesztővel (pl. nano vagy vim):

sudo nano /etc/postgresql/15/main/postgresql.conf # (Ubuntu/Debian példa)

Keresse meg a listen_addresses sort, és módosítsa a következőre:

# Hagyja üresen, vagy állítsa '*' értékre, hogy minden interfészen figyeljen
listen_addresses = '*'
# Alternatívaként, ha csak egy specifikus IP-címen szeretne figyelni:
# listen_addresses = '192.168.1.100'

A port beállítást is ellenőrizheti, az alapértelmezett érték 5432.

port = 5432

2. pg_hba.conf szerkesztése

Ez a fájl szabályozza, hogy mely hostokról, mely felhasználók és mely adatbázisokhoz milyen autentikációs módszerrel férhetnek hozzá. Ez a PostgreSQL biztonságának egyik kulcsfontosságú eleme.

sudo nano /etc/postgresql/15/main/pg_hba.conf # (Ubuntu/Debian példa)

A fájlban találhatók alapértelmezett szabályok. Adja hozzá a saját szabályait a fájl végére. A szabályok sorrendje fontos, az első illeszkedő szabály érvényesül.

# A pg_hba.conf szintaxisa:
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# Példák:
# Helyi kapcsolatok engedélyezése a "postgres" felhasználó számára (általában már létezik)
local   all             postgres                                peer

# Helyi kapcsolatok engedélyezése az összes felhasználó számára
local   all             all                                     peer

# Külső kapcsolat engedélyezése adott hálózatból, jelszóval (md5)
# Minden adatbázisra, minden felhasználóra, a 192.168.1.0/24 hálózatból
host    all             all             192.168.1.0/24          md5

# Külső kapcsolat engedélyezése adott IP-címről, jelszóval (md5)
host    all             all             10.0.0.5/32             md5

# Bármilyen külső kapcsolat engedélyezése jelszóval (NEM AJÁNLOTT éles környezetben!)
# CSAK FEJLESZTÉSRE VAGY ERŐSEN VÉDETT HÁLÓZATBAN!
host    all             all             0.0.0.0/0               md5

Magyarázat a mezőkhöz:

  • TYPE: A kapcsolat típusa (local Unix socket, host TCP/IP, hostssl SSL-lel titkosított TCP/IP).
  • DATABASE: Az adatbázis neve (all = mindegyik, sameuser = a felhasználóval azonos nevű adatbázis).
  • USER: A felhasználónév (all = mindegyik).
  • ADDRESS: Az IP-cím vagy hálózati tartomány (pl. 192.168.1.0/24). 0.0.0.0/0 minden IP-címet jelent.
  • METHOD: Az autentikációs módszer (pl. peer, ident, md5, scram-sha-256, trust).
    • peer: Unix socket kapcsolatoknál, a rendszer felhasználóneve alapján azonosít.
    • md5/scram-sha-256: Jelszó alapú autentikáció. Az scram-sha-256 a modernebb és biztonságosabb.
    • trust: Nincs jelszó, mindenki csatlakozhat (nagyon veszélyes, csak belső, kontrollált környezetben használja!).

Változtatások alkalmazása

Miután módosította a konfigurációs fájlokat, újra kell indítania a PostgreSQL szolgáltatást, hogy a változások érvénybe lépjenek.

sudo systemctl restart postgresql

Ha hiba történt a konfigurációban, a szolgáltatás nem fog elindulni. Ellenőrizze a logokat a journalctl -u postgresql paranccsal a hibakereséshez.

Biztonsági megfontolások és tűzfal

Az adatbázis-szerverek kritikusan fontosak, ezért a biztonság kiemelt prioritás. Íme néhány fontos lépés:

  • Erős jelszavak: Mindig használjon erős, egyedi jelszavakat minden adatbázis felhasználóhoz.
  • Minimális jogosultság elve: Ne adjon SUPERUSER jogokat minden felhasználónak. Csak azoknak adja meg, akiknek feltétlenül szükségük van rá.
  • Pontos pg_hba.conf beállítás: Korlátozza a hozzáférést a lehető legszűkebb körre. Kerülje a 0.0.0.0/0 trust beállítást!
  • Tűzfal beállítása: A PostgreSQL alapértelmezett portja a 5432/tcp. Győződjön meg róla, hogy a tűzfal (pl. UFW vagy firewalld) csak a szükséges IP-címekről engedélyezi a forgalmat ezen a porton.

Tűzfal konfiguráció (példák)

UFW (Uncomplicated Firewall) – Debian/Ubuntu

# Engedélyezze a 5432-es portot az adott IP-címről (pl. 192.168.1.100)
sudo ufw allow from 192.168.1.100 to any port 5432

# Engedélyezze a 5432-es portot egy teljes hálózatról
sudo ufw allow from 192.168.1.0/24 to any port 5432

# Ha minden IP-címről szeretné engedélyezni (csak ha biztos a dolgában!)
sudo ufw allow 5432/tcp

# Ellenőrizze az UFW állapotát
sudo ufw status

Firewalld – CentOS/RHEL/Fedora

# Engedélyezze a 5432-es portot az alapértelmezett zónában
sudo firewall-cmd --add-port=5432/tcp --permanent

# Engedélyezze a 5432-es portot egy specifikus forrás IP-címről
# sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="5432" accept'

# Újratöltés, hogy a változások érvénybe lépjenek
sudo firewall-cmd --reload

# Ellenőrizze a nyitott portokat
sudo firewall-cmd --list-all

Gyakori hibaelhárítási tippek

  • A PostgreSQL szolgáltatás nem indul el: Ellenőrizze a rendszernaplókat a journalctl -u postgresql paranccsal. A hibaüzenetek gyakran pontosan megmondják a probléma okát (pl. rossz konfiguráció, portfoglaltság).
  • Nem tudok csatlakozni távolról:
    • Ellenőrizze a postgresql.conf fájlban a listen_addresses beállítást. Kell lennie benne '*' vagy a kliens gép IP-címe.
    • Ellenőrizze a pg_hba.conf fájlban, hogy van-e megfelelő szabály a kliens IP-címére és felhasználójára.
    • Ellenőrizze a tűzfalat (UFW/firewalld), hogy engedélyezi-e a bejövő forgalmat az 5432-es porton a kliens gép IP-címéről.
    • Győződjön meg róla, hogy a PostgreSQL szolgáltatást újraindította a konfigurációs változtatások után.
  • Jelszó elfelejtve: Ideiglenesen beállíthatja a pg_hba.conf fájlban a trust módszert a postgres felhasználónak (csak helyi hozzáférésre), majd újraindítás után jelszót módosíthat, és visszaállíthatja az eredeti biztonságosabb módszert.

További eszközök és tippek

  • pg_dump és pg_restore: Ezek az eszközök elengedhetetlenek az adatbázis biztonsági mentéséhez és visszaállításához.
    # Adatbázis mentése
    pg_dump -U uj_felhasznalo -d uj_adatbazis > uj_adatbazis_mentes.sql
    
    # Adatbázis visszaállítása
    psql -U uj_felhasznalo -d uj_adatbazis < uj_adatbazis_mentes.sql
            
  • pgAdmin: Népszerű, grafikus webes felület a PostgreSQL adatbázisok kezeléséhez. Telepíthető egy külön szerverre vagy akár a fejlesztői gépére is.
  • DBeaver: Egy ingyenes univerzális adatbázis kliens, amely számos adatbázist támogat, beleértve a PostgreSQL-t is. Nagyon hasznos fejlesztői eszköz.
  • Rendszeres frissítések: Tartsa naprakészen a PostgreSQL szerverét és az operációs rendszert is a legújabb biztonsági javításokkal.

Összefoglalás

Gratulálunk! Most már rendelkezik a szükséges tudással a PostgreSQL telepítéséhez és konfigurálásához Linux környezetben. Megtanulta, hogyan telepítheti különböző disztribúciókra, hogyan kezelheti a felhasználókat és adatbázisokat, és hogyan konfigurálhatja a hálózati hozzáférést a postgresql.conf és pg_hba.conf fájlok segítségével. A biztonsági megfontolások és a tűzfal beállításának fontosságát is megértette.

A PostgreSQL egy rendkívül erőteljes és sokoldalú adatbázis, amelynek elsajátítása értékes képesség bármely IT szakember számára. Ne habozzon tovább kísérletezni, építeni és felfedezni a benne rejlő lehetőségeket! A hivatalos dokumentáció és a hatalmas online közösség mindig segítséget nyújt, ha elakad.

Leave a Reply

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük