PostgreSQL (Postgres) — мощная реляционная СУБД, предпочитаемая для сложных запросов, JSON-данных и высоких нагрузок. Устанавливается за 5 минут.
Установка PostgreSQL
sudo apt update
sudo apt install -y postgresql postgresql-contrib
# Запустить и включить автозапуск
sudo systemctl enable --now postgresql
# Проверить
sudo systemctl status postgresql
Основные операции через psql
# Войти как postgres (суперпользователь)
sudo -u postgres psql
-- Создать пользователя
CREATE USER myapp WITH PASSWORD 'SecurePass123!';
-- Создать БД
CREATE DATABASE myapp_db OWNER myapp;
-- Выдать права
GRANT ALL PRIVILEGES ON DATABASE myapp_db TO myapp;
-- Выйти
\q
Подключение и навигация
# Подключиться к конкретной БД
psql -U myapp -d myapp_db -h localhost
-- Список БД
\l
-- Список таблиц
\dt
-- Описание таблицы
\d tablename
-- Выполнить SQL из файла
\i /path/to/script.sql
Настройка удалённого доступа
# /etc/postgresql/16/main/postgresql.conf
listen_addresses = '*' # или конкретный IP
# /etc/postgresql/16/main/pg_hba.conf
# Разрешить подключение с конкретного IP:
host myapp_db myapp 192.168.1.100/32 scram-sha-256
sudo systemctl restart postgresql
⚠️ Открывайте удалённый доступ только с конкретных IP. Никогда не используйте host all all 0.0.0.0/0 — это разрешает подключение с любого IP.
Бэкап и восстановление
# Бэкап одной БД
pg_dump -U myapp myapp_db > backup_$(date +%Y%m%d).sql
# Бэкап всех БД
sudo -u postgres pg_dumpall > all_databases.sql
# Восстановление
psql -U myapp -d myapp_db < backup.sql
✅ Добавьте pg_dump в cron для ежедневных автоматических бэкапов:
0 3 * * * pg_dump -U myapp myapp_db > ~/backups/db_$(date +\%Y\%m\%d).sql