Установка PostgreSQL: Пошаговая инструкция для Debian и Astra Linux | AdminWiki

PostgreSQL: Полная инструкция по установке на Linux (Debian, Astra) и настройке

17 декабря 2025 8 мин. чтения #astra linux #debian #devops #pgadmin4 #postgresql #suricata #базы данных #установка PostgreSQL
Содержание статьи

Привет! Если ты читаешь эту статью, значит, тебе нужен мощный и надежный движок для базы данных. PostgreSQL — это как швейцарский нож в мире реляционных СУБД: открытый, расширяемый и невероятно стабильный. Давай разберем, как правильно его установить и настроить, чтобы избежать типичных ошибок новичков.

Подготовка системы и выбор метода установки

Перед началом убедись, что у тебя есть доступ к терминалу с правами суперпользователя (sudo). В зависимости от твоих задач, можно выбрать один из двух основных путей установки:

Метод Плюсы Минусы Для кого
Репозиторий ОС (APT) Простота, автоматические обновления Не самая свежая версия Новички, тестовые среды
Официальный репозиторий PostgreSQL Актуальные версии, больше расширений Требует добавления репозитория Продакшен, разработчики
Совет ментора: Для продакшена я рекомендую официальный репозиторий. Версии из репозиториев дистрибутивов часто отстают на несколько минорных релизов, что может означать отсутствие важных исправлений безопасности.

Шаг 1: Установка PostgreSQL из официального репозитория (Debian/Ubuntu)

Этот метод даст тебе самую свежую стабильную версию. Представь, что ты настраиваешь не просто базу, а фундамент для будущего приложения.

1.1. Добавление репозитория и установка

bash
# Обновляем список пакетов
sudo apt update

# Устанавливаем зависимости для добавления репозиториев
sudo apt install -y wget gnupg2

# Импортируем ключ репозитория PostgreSQL
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Добавляем репозиторий для твоей версии ОС (например, для Debian 12 Bookworm)
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list

# Обновляем пакеты с учетом нового репозитория
sudo apt update

# Устанавливаем PostgreSQL (укажи нужную версию, например 16)
sudo apt install -y postgresql-16 postgresql-client-16 postgresql-contrib-16
Внимание! Команда $(lsb_release -cs) определяет кодовое имя твоей ОС. Если используешь Astra Linux (основана на Debian), убедись в совместимости. Для Astra Linux Special Edition "Смоленск" (основана на Debian 10 Buster) используй buster вместо $(lsb_release -cs).

1.2. Проверка установки и запуск службы

bash
# Проверяем статус службы PostgreSQL
sudo systemctl status postgresql

# Если служба не запущена, запускаем её
sudo systemctl start postgresql

# Включаем автозагрузку при старте системы
sudo systemctl enable postgresql

Шаг 2: Первоначальная настройка и безопасность

После установки PostgreSQL создает системного пользователя postgres. По умолчанию используется метод аутентификации peer для локальных подключений, что означает: чтобы войти как пользователь БД "postgres", твой системный пользователь ОС тоже должен называться "postgres".

2.1. Смена пароля пользователя postgres

bash
# Переключаемся на системного пользователя postgres
sudo -i -u postgres

# Запускаем интерактивную консоль PostgreSQL
psql

# В консоли PostgreSQL меняем пароль для пользователя postgres
\password postgres

# Введи новый надежный пароль дважды

# Выходим из консоли
\q

# Возвращаемся к своему пользователю
exit

2.2. Настройка удаленного доступа (опционально)

По умолчанию PostgreSQL слушает только локальные подключения (127.0.0.1). Чтобы разрешить доступ из сети, нужно отредактировать два файла конфигурации.

bash
# Редактируем основной файл конфигурации
sudo nano /etc/postgresql/16/main/postgresql.conf

Найди строку #listen_addresses = 'localhost' и раскомментируй её, изменив значение:

config
listen_addresses = '*'          # слушать все сетевые интерфейсы
# ИЛИ для большей безопасности:
# listen_addresses = '192.168.1.100,localhost'  # только указанные IP

Теперь настрой правила доступа в файле pg_hba.conf:

bash
sudo nano /etc/postgresql/16/main/pg_hba.conf

Добавь в конец файла правило для твоей сети (пример):

config
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# Разрешить всем пользователям доступ ко всем БД с паролем из указанной сети
host    all             all             192.168.1.0/24          md5
# Разрешить репликацию с определенного хоста
host    replication     all             192.168.1.50/32         md5
bash
# После изменений перезапусти PostgreSQL
sudo systemctl restart postgresql

# Проверь, слушает ли PostgreSQL сетевые подключения
sudo ss -tulpn | grep 5432

Шаг 3: Установка pgAdmin4 — веб-интерфейса для управления

PgAdmin4 — это мощный веб-интерфейс для администрирования PostgreSQL. Инструкция по установке pgAdmin4 на Astra Linux или Debian имеет свои нюансы.

3.1. Установка через репозиторий (рекомендуется)

bash
# Устанавливаем зависимости
sudo apt install -y curl

# Добавляем репозиторий pgAdmin4
curl -fsSL https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/pgadmin-keyring.gpg

# Создаем файл репозитория (для Debian 12/Ubuntu 22.04+)
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/pgadmin-keyring.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list'

sudo apt update

# Устанавливаем pgAdmin4 в веб-режиме
sudo apt install -y pgadmin4-web

# Настраиваем pgAdmin4
sudo /usr/pgadmin4/bin/setup-web.sh

Скрипт задаст тебе несколько вопросов: email для входа, пароль и настройку веб-сервера. После этого pgAdmin4 будет доступен по адресу http://твой_сервер/pgadmin4.

3.2. Альтернатива: Установка в Desktop режиме (только с GUI)

bash
sudo apt install -y pgadmin4-desktop

Шаг 4: Базовые операции после установки

Давай проверим, что все работает, и создадим тестовую базу данных.

4.1. Создание новой базы данных и пользователя

bash
sudo -i -u postgres psql

-- Создаем нового пользователя (роль) с паролем
CREATE USER myuser WITH PASSWORD 'StrongPassword123!';

-- Создаем базу данных и назначаем владельцем нового пользователя
CREATE DATABASE mydb OWNER myuser;

-- Даем пользователю все привилегии на его БД (опционально, т.к. он владелец)
GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

-- Проверяем список баз данных
\l

-- Подключаемся к новой базе от имени нового пользователя
\c mydb myuser localhost

-- Создаем простую тестовую таблицу
CREATE TABLE test (id SERIAL PRIMARY KEY, name VARCHAR(50));
INSERT INTO test (name) VALUES ('Первая запись');
SELECT * FROM test;

\q

Часто задаваемые вопросы (FAQ)

Где хранятся файлы базы данных PostgreSQL?

Основной каталог данных (PGDATA) по умолчанию находится в /var/lib/postgresql/<версия>/main/. Конфигурационные файлы — в /etc/postgresql/<версия>/main/. Точный путь можно узнать командой: sudo -u postgres psql -c "SHOW data_directory;"

Как обновить PostgreSQL до новой мажорной версии?

Обновление между мажорными версиями (например, с 15 до 16) требует дампа и восстановления данных или использования утилиты pg_upgrade. Самый безопасный путь для новичка:

  1. Сделать полный дамп всех баз: pg_dumpall > backup.sql
  2. Установить новую версию PostgreSQL.
  3. Остановить обе версии, перенести или сконвертировать кластер данных.
  4. Восстановить дамп.

Можно ли установить PostgreSQL вместе с другими сервисами, например, Suricata?

Абсолютно! Установка Suricata на Debian (IDS/IPS система) часто требует базу данных для хранения логов. PostgreSQL отлично подходит для этой задачи. Убедись, что у сервера достаточно ресурсов (ОЗУ, CPU). Размести их в одной сети для минимальных задержек. Настрой Suricata на запись событий в PostgreSQL, используя плагин базы данных.

Что делать, если забыл пароль пользователя postgres?

Останови службу PostgreSQL: sudo systemctl stop postgresql. Запусти кластер в single-user режиме: sudo -u postgres /usr/lib/postgresql/16/bin/postgres --single -D /var/lib/postgresql/16/main -c config_file=/etc/postgresql/16/main/postgresql.conf. В открывшейся сессии выполни ALTER USER postgres WITH PASSWORD 'новый_пароль';. Нажми Ctrl+D и перезапусти службу.

Как настроить автоматическое резервное копирование?

Используй pg_dump или pg_dumpall в cron-задании. Пример простого скрипта для ежедневного бэкапа:

bash
#!/bin/bash
BACKUP_DIR="/var/backups/postgresql"
DATE=$(date +%Y%m%d_%H%M%S)
sudo -u postgres pg_dumpall | gzip > "$BACKUP_DIR/backup_$DATE.sql.gz"
# Удаляем бэкапы старше 30 дней
find "$BACKUP_DIR" -name "*.gz" -mtime +30 -delete

Заключение

Поздравляю! Теперь у тебя есть работающий сервер PostgreSQL. Ты прошел путь от установки пакетов до настройки удаленного доступа и веб-интерфейса pgAdmin4. Помни главные принципы:

  • Безопасность: Всегда меняй пароли по умолчанию, ограничивай доступ по IP.
  • Резервные копии: Настрой автоматический бэкап до того, как на базу ляжет первая полезная нагрузка.
  • Мониторинг: Следи за логами (/var/log/postgresql/) и использованием диска.

PostgreSQL — это мощный инструмент, который будет служить тебе верой и правдой. Удачи в освоении!

Поделиться:
Сохранить гайд? В закладки браузера