Table of Contents

PostgreSQL - pradžios vadovas

PostgreSQL yra galinga atvirojo kodo reliacinė duomenų bazė, garsėjanti patikimumu, duomenų vientisumu ir pažangiomis funkcijomis, tokiomis kaip JSON palaikymas, pilnateksčio paieška ir išplečiamumas. Šiame serveryje PostgreSQL 16 visiškai sukonfigūruotas su administratoriaus slaptažodžiu, kurį nurodėte užsakydami. Duomenų bazėms valdyti per žiniatinklį įdiegtas pgAdmin4.


1 žingsnis – Patikrinkite, ar PostgreSQL veikia

Jūsų serverio IP adresas ir root slaptažodis nurodyti kliento skydelio puslapyje Server Details. pgAdmin4 yra žiniatinklio PostgreSQL valdymo įrankis. Atidarykite http://your.server.ip/pgadmin4 naršyklėje ir patikrinkite, ar veikia.

Prisijungimas prie pgAdmin4:

  • El. paštas: el. pašto adresas, kurį įvedėte užsakydami
  • Slaptažodis: administratoriaus slaptažodis, kurį įvedėte užsakydami

PostgreSQL superadministratorius:

  • Naudotojo vardas: postgres
  • Slaptažodis: administratoriaus slaptažodis, kurį įvedėte užsakydami

Prisijunkite prie pgAdmin4 ir pridėkite PostgreSQL serverio ryšį:

  1. Dešiniuoju pelės mygtuku spustelėkite Servers kairiajame skydelyje ir pasirinkite Register > Server
  2. General skirtukas: įveskite pavadinimą (pvz., „Local”)
  3. Connection skirtukas: Host = 127.0.0.1, Port = 5432, Username = postgres, Password = jūsų Admin Password
  4. Spustelėkite Išsaugoti

Dabar galite naršyti duomenų bazes, vykdyti SQL užklausas, importuoti/eksportuoti duomenis ir valdyti naudotojus per žiniatinklio sąsają.

Duomenų bazių serveriams vieša interneto prieiga nereikalinga. Saugiai prieigai patalpinkite serverį privačiame tinkle už VyOS maršrutizatoriaus ir prie PostgreSQL bei pgAdmin4 junkitės per VPN privačiu serverio IP.


2 žingsnis – Nuotolinis prisijungimas prie PostgreSQL

PostgreSQL sukonfigūruotas priimti nuotolinius prisijungimus. Prisijungti galite iš bet kurios programos ar įrankio:

psql -h your.server.ip -U postgres

Prisijungimo duomenys grafiniams duomenų bazių įrankiams (pgAdmin Desktop, DBeaver, DataGrip ir kt.):

Parametras Reikšmė
Mazgasyour.server.ip
Prievadas5432
Naudotojo vardaspostgres
SlaptažodisAdmin Password iš užsakymo

Pastaba: 5432 prievadas yra PostgreSQL protokolas, ne HTTP – naršyklėje jo atidaryti negalima. Naudokite duomenų bazės klientą arba aukščiau pateiktą komandą.


3 žingsnis – SSL įjungimas pgAdmin4 (neprivaloma)

Jei į šį serverį nukreiptas jūsų domenas, pgAdmin4 galite įjungti HTTPS su nemokamu Let’s Encrypt sertifikatu. Prisijunkite per SSH ir paleiskite:

ssh root@your.server.ip
/opt/setup/get-ssl.sh db.yourdomain.com

Scenarijus patikrins DNS, gaus sertifikatą ir automatiškai sukonfigūruos Apache HTTPS. Baigus, pgAdmin4 pasiekiamas adresu https://db.yourdomain.com/pgadmin4.

Pastaba: Prieš paleisdami scenarijų įsitikinkite, kad jūsų domeno A įrašas nukreiptas į serverio IP. SSL neprivalomas – pgAdmin4 puikiai veikia per HTTP pasiekiant IP adresu.


Duomenų bazių valdymas

Papildomų duomenų bazių kūrimas

Papildomas duomenų bazes galite sukurti per pgAdmin4 arba 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;

Importas ir eksportas

Per pgAdmin4: Dešiniuoju pelės mygtuku spustelėkite duomenų bazę ir pasirinkite Backup arba Restore. Palaikomi custom, tar, plain ir directory formatai.

Per komandinę eilutę:

# Export
pg_dump -U postgres your_database > backup.sql

# Export (custom format, compressed)
pg_dump -U postgres -Fc your_database > backup.dump

# Import (SQL)
psql -U postgres your_database < backup.sql

# Import (custom format)
pg_restore -U postgres -d your_database backup.dump

Didelėms duomenų bazėms naudokite pg_dump -Fc (custom formatas) greitesnėms ir mažesnėms kopijoms.


Po įdiegimo

Fail2Ban – apsauga nuo slaptažodžių spėjimo atakų

Jūsų serveryje įdiegta Fail2Ban iš anksto sukonfigūruotas apsaugoti SSH nuo slaptažodžių spėjimo atakų.

Taisyklė Maks. bandymų Blokavimo trukmė
SSH5 nesėkmingi prisijungimai10 minučių

Naudingos komandos:

# Check banned IPs
fail2ban-client status sshd

# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4

Jei netyčia užsiblokavote, prisijunkite per VNC konsolę kliento skydelyje ir atblokuokite savo IP.

Paslaugų valdymas

PostgreSQL ir Apache veikia per systemd. Dažnos komandos:

# Check service status
systemctl status postgresql
systemctl status apache2

# Restart PostgreSQL
systemctl restart postgresql

# View PostgreSQL logs
journalctl -u postgresql -n 100

PostgreSQL našumo derinimas

PostgreSQL per pirmąjį paleidimą automatiškai suderinamas pagal turimą RAM. Dabartinius nustatymus patikrinsite taip:

sudo -u postgres psql -c "SHOW shared_buffers; SHOW effective_cache_size; SHOW work_mem;"

Norėdami pakeisti rankiniu būdu, redaguokite /etc/postgresql/16/main/conf.d/99-tuning.conf ir paleiskite PostgreSQL iš naujo:

systemctl restart postgresql

Serverio prisijungimo duomenys

PostgreSQL ir pgAdmin4 prisijungimo duomenys saugomi /root/.pg_credentials.

Kas sukonfigūruota iš anksto

  • Nuotolinė prieiga: PostgreSQL priima prisijungimus iš bet kurio IP per 5432 prievadą (scram-sha-256 autentifikavimas)
  • shared_buffers: Per pirmąjį paleidimą automatiškai nustatoma į 25 % turimos RAM
  • effective_cache_size: Nustatyta į 75 % RAM optimaliam užklausų planavimui
  • Koduotė: Duomenų bazės kuriamos su UTF-8 koduote (utf8, en_US.UTF-8)

Įdiegta programinė įranga

Komponentas Versija
Ubuntu24.04 LTS
PostgreSQL16 (PGDG APT)
Apache2.4
pgAdmin4Naujausia (žiniatinklio režimas)
CertbotNaujausia
Fail2Ban1.0

Trikčių šalinimas

Problema Sprendimas
Nepavyksta nuotoliniu būdu prisijungti prie PostgreSQL Patikrinkite, ar ugniasienė neblokuoja 5432 prievado. Patikrinkite listen_addresses = '*' faile conf.d/99-custom.conf ir ar pg_hba.conf leidžia jūsų IP
pgAdmin4 rodo prisijungimo klaidą Naudokite el. paštą ir Admin Password iš užsakymo. Prisijungimo duomenys yra /root/.pg_credentials
pgAdmin4 puslapis neįsikelia (HTTP 500) Patikrinkite Apache: systemctl status apache2. Patikrinkite pgAdmin žurnalus: /var/log/pgadmin/pgadmin4.log
PostgreSQL nepasileidžia Žurnalų tikrinimas: journalctl -u postgresql -n 50. Dažna priežastis: pilnas diskas (df -h /) arba netinkama konfigūracija (pg_lsclusters)
Pamiršote PostgreSQL administratoriaus slaptažodį Prisijunkite per SSH ir patikrinkite /root/.pg_credentials
Užblokavo Fail2Ban Atblokuokite savo IP per VNC konsolę kliento skydelyje
Pamiršote root slaptažodį Atkurkite jį per VNC konsolę kliento skydelyje