Установка PostgreSQL на Ubuntu 22.04

Введение
PostgreSQL — открытая и популярная реляционная СУБД, реализующая SQL с акцентом на устойчивость, целостность данных и хорошую производительность. Подходит для критичных к надёжности приложений. Среди ключевых возможностей: вложенные транзакции, MVCC (многоверсионный контроль конкуренции), наследование таблиц, асинхронная репликация и поддержка внешних ключей.
Важно: инструкция ориентирована на Ubuntu 22.04 и PostgreSQL 15 из официального репозитория проекта.
Что потребуется
- Сервер с Ubuntu 22.04.
- Доступ по пользователю с правами root или sudo.
Подготовка системы
Обновите пакеты и установите зависимости:
apt update -y
apt upgrade -yУстановите необходимые утилиты:
apt install wget curl gnupg2 -y(В исходной статье была опечатка: упоминалось InfluxDB — здесь мы устанавливаем PostgreSQL.)
Добавление официального репозитория PostgreSQL
Последние версии PostgreSQL часто отсутствуют в стандартных репозиториях Ubuntu. Добавьте официальный репозиторий и GPG-ключ:
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/nullОбновите индекс пакетов:
apt update -yУстановка PostgreSQL
Установите PostgreSQL и клиентские утилиты:
apt install postgresql postgresql-client -yПроверка статуса сервиса:
systemctl status postgresqlОжидаемый вывод (пример системы):
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2022-12-05 14:28:18 UTC; 1min 57s ago
Main PID: 10824 (code=exited, status=0/SUCCESS)
CPU: 4ms
Dec 05 14:28:18 ubuntu2204 systemd[1]: Starting PostgreSQL RDBMS...
Dec 05 14:28:18 ubuntu2204 systemd[1]: Finished PostgreSQL RDBMS.Проверка версии PostgreSQL:
sudo -u postgres psql -c "SELECT version();"Пример вывода:
version
-----------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 15.1 (Ubuntu 15.1-1.pgdg22.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0, 64-bit
(1 row)Настройка PostgreSQL для удалённых подключений
По умолчанию PostgreSQL слушает только localhost. Чтобы разрешить подключения извне, нужно изменить два файла: pg_hba.conf (методы аутентификации) и postgresql.conf (listen_addresses).
Откройте файл методов аутентификации:
nano /etc/postgresql/15/main/pg_hba.confПример внесения изменений (вставьте только если осознаёте риски — см. раздел «Безопасность»):
local all all trust
host all all 0.0.0.0/0 md5Сохраните файл. Затем откройте основной конфиг:
nano /etc/postgresql/15/main/postgresql.confУбедитесь, что строка настроена так:
listen_addresses='*'Перезапустите сервис:
systemctl restart postgresqlПримечание: использование trust локально упрощает доступ, но снижает безопасность; для production рекомендуем использовать md5/ scram-sha-256 и ограничивать адреса в pg_hba.conf.
Создание административного пользователя
Войдите в psql от системного пользователя postgres:
sudo -u postgres psqlВы увидите приглашение psql, например:
psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1))
Type "help" for help.
postgres=#Создайте роль-администратора (пример):
CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'password';Проверьте роли:
\duПример вывода:
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | Superuser, Create role, Create DB | {}Совет: замените пароль на надёжный и не используйте слово root в продуктивной среде — лучше отдельный административный логин.
Создание базы данных и пользователя
В psql создайте базу данных и пользователя, затем назначьте привилегии:
create database wpdb;
create user wpuser with encrypted password 'password';
grant all privileges on database wpdb to wpuser;Проверьте список баз:
\lПример вывода списка баз указан в исходной статье.
Подключение к базе с удалённой машины
Проверка подключения из удалённой машины:
psql 'postgres://wpuser:password@postgres-ip-address:5432/wpdb?sslmode=disable'Если используете SSL в окружении производства — настройте sslmode=require и корректные сертификаты.
Безопасность и лучшие практики
- Ограничьте адреса в pg_hba.conf вместо 0.0.0.0/0 (например, 10.0.0.0/24).
- Используйте scram-sha-256 (PostgreSQL >=10) вместо md5.
- Запускайте регулярные бэкапы (pg_dump, pg_basebackup) и проверяйте восстановление.
- Настройте мониторинг (pg_stat_activity, pg_stat_replication) и алерты по SLI/SLO.
- Отключите ненужные расширения и минимизируйте права пользователей.
Критерии приёмки
- Сервис PostgreSQL запущен и доступен локально: systemctl status postgresql -> active.
- Подключение под созданным пользователем успешно с удалённого хоста (psql URI).
- Бэкап базы успешно создаётся и восстанавливается (тестовый restore).
- В pg_hba.conf и postgresql.conf применены ожидаемые изменения и сервис перезапущен.
Чек-лист установки (операционный playbook)
- Обновить пакеты: apt update && apt upgrade.
- Установить wget, curl, gnupg2.
- Добавить репозиторий PostgreSQL и GPG-ключ.
- apt update && apt install postgresql postgresql-client.
- Проверить systemctl status postgresql.
- Настроить pg_hba.conf и postgresql.conf для требуемых подключений.
- Создать административную роль и пользовательские базы.
- Настроить бэкапы и мониторинг.
- Документировать доступы и секреты в хранилище секретов.
Роли и обязанности (короткий чек-лист по ролям)
- Администратор СУБД: установка, конфигурация, резервное копирование.
- Девопс / Инфраструктура: настройка сети/фаервола, автоматизация развертывания.
- Разработчик: миграции схем, тестирование производительности.
Отладка: распространённые ошибки и решения
- Не слушает на внешнем интерфейсе: проверьте listen_addresses и перезапустите сервис.
- Отказ аутентификации: проверьте pg_hba.conf и используемый метод (md5/scram).
- Порт 5432 занят: просмотрите netstat/ss и конфликты с другими сервисами.
- Проблемы с правами файлов: убедитесь, что каталог данных принадлежит postgres.
Когда этот подход не подходит
- Если нужна мгновенная масштабируемость с минимальным администрированием: рассмотрите управляемые сервисы (RDS, Cloud SQL или локальные провайдеры).
- Для тестов и изоляции окружения быстрее использовать Docker-контейнер с образом postgres.
- Если требуются горизонтально масштабируемые NoSQL-подходы — PostgreSQL не заменит специализированные системы для больших объёмов неструктурированных данных.
Альтернативы и миграция
- Docker: быстрый старт и изоляция; команда:
docker run --name pg -e POSTGRES_PASSWORD=pass -p 5432:5432 -d postgres:15- Управляемые сервисы: снимают часть операционных задач (бэкап, обновления, HA).
- Миграция с MySQL: используйте pgloader или последовательный экспорт/импорт.
Быстрые команды (cheat sheet)
- Проверить статус: systemctl status postgresql
- Перезапуск: systemctl restart postgresql
- Войти в psql: sudo -u postgres psql
- Список баз: \l
- Список ролей: \du
- Выполнить SQL одной командой: sudo -u postgres psql -c “SELECT version();”
Факт-бокс
- Версия в инструкции: PostgreSQL 15.x.
- Порт по умолчанию: 5432.
- Основная конфигурация: /etc/postgresql/15/main/postgresql.conf и pg_hba.conf.
Пример простого плана миграции (высокоуровневый)
- Подготовить тестовую среду с той же версией PostgreSQL.
- Выполнить дамп и восстановление в тесте: pg_dump/pg_restore.
- Проверить работу приложения и производительность.
- Запланировать окно обслуживания для переноса в прод.
Мини-рубрика: безопасность при удалённом доступе
- Разрешайте подключение только с конкретных подсетей.
- Прекратите использование trust в продуктиве.
- Храните пароли в менеджере секретов и применяйте ротацию.
- Включите шифрование на уровне подключения (SSL/TLS).
Заключение
Вы установили и настроили PostgreSQL 15 на Ubuntu 22.04, включили удалённые подключения, создали роли и базу данных. Следующие шаги: настроить регулярные бэкапы, мониторинг и ограничить доступ по сети для безопасной эксплуатации.
Важно: если нужна помощь с конкретной ошибкой, присылайте вывод команды и конфигурационные фрагменты — тогда можно дать точные рекомендации.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента