Гид по технологиям

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

• 5 min read • Базы данных • Обновлено 28 Nov 2025
Установка PostgreSQL на Ubuntu 22.04
Установка PostgreSQL на Ubuntu 22.04

Логотип PostgreSQL

Введение

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)

  1. Обновить пакеты: apt update && apt upgrade.
  2. Установить wget, curl, gnupg2.
  3. Добавить репозиторий PostgreSQL и GPG-ключ.
  4. apt update && apt install postgresql postgresql-client.
  5. Проверить systemctl status postgresql.
  6. Настроить pg_hba.conf и postgresql.conf для требуемых подключений.
  7. Создать административную роль и пользовательские базы.
  8. Настроить бэкапы и мониторинг.
  9. Документировать доступы и секреты в хранилище секретов.

Роли и обязанности (короткий чек-лист по ролям)

  • Администратор СУБД: установка, конфигурация, резервное копирование.
  • Девопс / Инфраструктура: настройка сети/фаервола, автоматизация развертывания.
  • Разработчик: миграции схем, тестирование производительности.

Отладка: распространённые ошибки и решения

  • Не слушает на внешнем интерфейсе: проверьте 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.

Пример простого плана миграции (высокоуровневый)

  1. Подготовить тестовую среду с той же версией PostgreSQL.
  2. Выполнить дамп и восстановление в тесте: pg_dump/pg_restore.
  3. Проверить работу приложения и производительность.
  4. Запланировать окно обслуживания для переноса в прод.

Мини-рубрика: безопасность при удалённом доступе

  • Разрешайте подключение только с конкретных подсетей.
  • Прекратите использование trust в продуктиве.
  • Храните пароли в менеджере секретов и применяйте ротацию.
  • Включите шифрование на уровне подключения (SSL/TLS).

Заключение

Вы установили и настроили PostgreSQL 15 на Ubuntu 22.04, включили удалённые подключения, создали роли и базу данных. Следующие шаги: настроить регулярные бэкапы, мониторинг и ограничить доступ по сети для безопасной эксплуатации.

Важно: если нужна помощь с конкретной ошибкой, присылайте вывод команды и конфигурационные фрагменты — тогда можно дать точные рекомендации.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро