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šį:
- Dešiniuoju pelės mygtuku spustelėkite Servers kairiajame skydelyje ir pasirinkite Register > Server
- General skirtukas: įveskite pavadinimą (pvz., „Local”)
- Connection skirtukas: Host =
127.0.0.1, Port =5432, Username =postgres, Password = jūsų Admin Password - 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ė |
|---|---|
| Mazgas | your.server.ip |
| Prievadas | 5432 |
| Naudotojo vardas | postgres |
| Slaptažodis | Admin 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ė |
|---|---|---|
| SSH | 5 nesėkmingi prisijungimai | 10 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 |
|---|---|
| Ubuntu | 24.04 LTS |
| PostgreSQL | 16 (PGDG APT) |
| Apache | 2.4 |
| pgAdmin4 | Naujausia (žiniatinklio režimas) |
| Certbot | Naujausia |
| Fail2Ban | 1.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 |