Table of Contents

PostgreSQL — посібник для початку роботи

PostgreSQL — потужна реляційна база даних з відкритим кодом, відома надійністю, цілісністю даних і розширеними можливостями, як-от підтримка JSON, повнотекстовий пошук і розширюваність. Сервер постачається з повністю налаштованим PostgreSQL 16 і паролем адміністратора, вказаним під час замовлення. Для керування базами через браузер встановлено pgAdmin4.


Крок 1 — перевірте, що PostgreSQL працює

IP-адресу сервера й пароль root показано на сторінці Server Details у клієнтській панелі. pgAdmin4 — вебінструмент для керування PostgreSQL. Відкрийте http://your.server.ip/pgadmin4 у браузері, щоб переконатися, що все працює.

Вхід у pgAdmin4:

  • Email: email, вказаний під час замовлення
  • Пароль: пароль адміністратора (Admin Password), який ви вказали під час замовлення

Суперкористувач PostgreSQL:

  • Імʼя користувача: postgres
  • Пароль: пароль адміністратора (Admin Password), який ви вказали під час замовлення

Увійдіть у pgAdmin4, потім додайте підключення до сервера PostgreSQL:

  1. Клацніть правою кнопкою на Servers у лівій панелі й оберіть Register > Server
  2. General (вкладка): введіть назву (наприклад, “Local”)
  3. Connection (вкладка): Host = 127.0.0.1, Port = 5432, Username = postgres, Password = ваш Admin Password
  4. Натисніть Save

Тепер можна переглядати бази даних, виконувати SQL-запити, імпортувати й експортувати дані та керувати користувачами через вебінтерфейс.

Серверам баз даних не потрібен публічний доступ з інтернету. Для безпечного доступу розмістіть сервер у приватній мережі за маршрутизатором VyOS і підключайтеся через VPN до PostgreSQL і pgAdmin4 за приватною IP сервера.


Крок 2 — віддалене підключення до PostgreSQL

PostgreSQL налаштовано на приймання віддалених підключень. Підключатися можна з будь-якого застосунку чи інструмента:

psql -h your.server.ip -U postgres

Параметри підключення для графічних інструментів (pgAdmin Desktop, DBeaver, DataGrip тощо):

Параметр Значення
Хостyour.server.ip
Порт5432
Імʼя користувачаpostgres
ПарольAdmin Password із замовлення

Примітка: Порт 5432 — це протокол PostgreSQL, а не HTTP, тож відкрити його в браузері неможливо. Використовуйте клієнт баз даних або команду вище.


Крок 3 — увімкніть SSL для pgAdmin4 (необовʼязково)

Якщо на сервер спрямовано домен, можна увімкнути HTTPS для pgAdmin4 із безкоштовним сертифікатом Let’s Encrypt. Підключіться через SSH і виконайте:

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

Скрипт перевірить DNS, отримає сертифікат і автоматично налаштує Apache для HTTPS. Після завершення pgAdmin4 буде доступний за адресою https://db.yourdomain.com/pgadmin4.

Примітка: Перед запуском скрипта переконайтеся, що A-запис домену вказує на IP сервера. SSL необовʼязковий — pgAdmin4 нормально працює через HTTP за IP-адресою.


Керування базами даних

Створення додаткових баз даних

Додаткові бази даних можна створити через pgAdmin4 або 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;

Імпорт і експорт

Через pgAdmin4: Клацніть правою кнопкою на базі даних і оберіть Backup або Restore. Підтримуються формати custom, tar, plain і directory.

Через командний рядок:

# 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

Для великих баз використовуйте pg_dump -Fc (формат custom) — так резервні копії швидші й менші.


Після встановлення

Fail2Ban — захист від підбору паролів

Сервер постачається з Fail2Ban , попередньо налаштованим для захисту SSH від підбору паролів.

Правило Макс. спроб Тривалість блокування
SSH5 невдалих входів10 хвилин

Корисні команди:

# Check banned IPs
fail2ban-client status sshd

# Unban an IP
fail2ban-client set sshd unbanip 1.2.3.4

Якщо ви випадково заблокували себе, підключіться через VNC-консоль у клієнтській панелі й розблокуйте свою IP.

Керування сервісами

PostgreSQL і Apache працюють через systemd. Типові команди:

# Check service status
systemctl status postgresql
systemctl status apache2

# Restart PostgreSQL
systemctl restart postgresql

# View PostgreSQL logs
journalctl -u postgresql -n 100

Налаштування продуктивності PostgreSQL

PostgreSQL автоматично налаштовується під час першого завантаження з урахуванням доступної RAM. Щоб перевірити поточні параметри:

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

Щоб змінити вручну, відредагуйте /etc/postgresql/16/main/conf.d/99-tuning.conf і перезапустіть PostgreSQL:

systemctl restart postgresql

Облікові дані сервера

Облікові дані PostgreSQL і pgAdmin4 зберігаються у /root/.pg_credentials.

Що вже налаштовано

  • Віддалений доступ: PostgreSQL приймає підключення з будь-якої IP на порту 5432 (автентифікація scram-sha-256)
  • shared_buffers: Автоматично налаштовується на 25% доступної RAM під час першого завантаження
  • effective_cache_size: Встановлено на 75% RAM для оптимального планування запитів
  • Кодування: Бази даних створюються з кодуванням UTF-8 (utf8, en_US.UTF-8)

Встановлене ПЗ

Компонент Версія
Ubuntu24.04 LTS
PostgreSQL16 (PGDG APT)
Apache2.4
pgAdmin4Остання (вебрежим)
CertbotОстання
Fail2Ban1.0

Усунення проблем

Проблема Рішення
Не вдається віддалено підключитися до PostgreSQL Перевірте, що порт 5432 не блокує файрвол. Перевірте listen_addresses = '*' у conf.d/99-custom.conf і що pg_hba.conf дозволяє вашу IP
pgAdmin4 показує помилку входу Використовуйте email і Admin Password із замовлення. Облікові дані — у /root/.pg_credentials
Сторінка pgAdmin4 не завантажується (HTTP 500) Перевірте Apache: systemctl status apache2. Перевірте логи pgAdmin: /var/log/pgadmin/pgadmin4.log
PostgreSQL не запускається Перевірте логи: journalctl -u postgresql -n 50. Поширена причина — заповнений диск (df -h /) або некоректна конфігурація (pg_lsclusters)
Забули пароль адміністратора PostgreSQL Підключіться через SSH і перевірте /root/.pg_credentials
Заблоковано Fail2Ban Розблокуйте свою IP через VNC-консоль у клієнтській панелі
Забули пароль root Скиньте його через VNC-консоль у клієнтській панелі