Установка и базовое использование PostgreSQL на Ubuntu

Краткое содержание
Обзор
Postgres — это свободная реляционная СУБД с поддержкой ACID, расширяемой архитектурой и богатым набором возможностей: транзакции, триггеры, индексы, расширения (например, PostGIS), и многое другое. Она хорошо подходит для сложных приложений, которым нужны надёжность и масштабируемость.
Ключевые понятия в одну строку:
- Роль — учетная запись в PostgreSQL, может представлять пользователя или группу.
- База данных — пространство данных, управляемое сервером PostgreSQL.
- pg_hba.conf — файл, определяющий методы аутентификации клиентов.
Что будет рассмотрено
- Установка PostgreSQL из официального apt‑репозитория
- Проверка состояния сервиса и версии
- Управление ролями и базами данных
- Создание таблиц, вставка, обновление, удаление
- Настройка методов аутентификации в pg_hba.conf
- Безопасность, бэкап и миграция
- Чек‑листы для администратора, разработчика и DevOps
Установка PostgreSQL
В этом руководстве мы скачиваем и устанавливаем последнюю пригодную версию PostgreSQL через официальный apt‑репозиторий: https://www.postgresql.org/download/linux/ubuntu/
Ubuntu также содержит пакеты PostgreSQL по умолчанию, но официальный репозиторий позволяет установить конкретную версию по выбору.
Шаги для использования apt‑репозитория:
Выберите версию Ubuntu
В примерах использована Ubuntu Bionic (18.04). Если у вас другая версия, замените “bionic” на кодовое имя вашей версии (например, focal для 20.04).
Создайте файл репозитория:
`nano /etc/apt/sources.list.d/pgdg.list`Добавьте строку в pgdg.list:
deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg mainИмпортируйте ключ подписи репозитория и обновите списки пакетов:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -sudo apt-get updateТеперь установите сервер PostgreSQL и дополнительные утилиты:
sudo apt-get install postgresql postgresql-contribПосле установки сервер PostgreSQL запустится автоматически.
Проверка статуса службы
systemctl status postgresqlПроверка версии сервера
sudo -u postgres psql -c "SELECT version();"Пример вывода:
version
-----------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 11.4 (Ubuntu 11.4-1.pgdg18.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit Методы аутентификации и роли
PostgreSQL использует концепцию ролей для разрешений доступа. Роль может представлять отдельного пользователя или группу.
Поддерживаемые методы аутентификации (самые распространённые):
- trust — разрешает подключение без пароля (опасно на продуктиве)
- password — проверка по паролю
- ident — работает для TCP/IP, определяет систему пользователя через идентификацию клиента
- peer — для локальных unix‑сокетов, сравнивает системное имя пользователя с ролью
Файл pg_hba.conf хранит правила аутентификации. Его можно редактировать, чтобы изменить способ проверки подключений.
Откройте файл примера для версии 11:
nano /etc/postgresql/11/main/pg_hba.confПо умолчанию для локальных подключений используется метод peer. Для сетевых подключений часто используют md5 или scram‑sha‑256 (рекомендуется). Настройка выглядит приблизительно так:
- локальные unix‑сокеты: peer
- локальные TCP/IP: md5 или scram‑sha‑256
- доверенные адреса (админская сеть): md5

В процессе установки автоматически создаётся системная учётная запись postgres и роль postgres в базе — это суперпользователь (аналог root в MySQL).
Подключение к PostgreSQL
Переключитесь на системного пользователя postgres и запустите psql:
sudo -i -u postgres
psqlИли подключитесь одной командой:
sudo -u postgres psqlПосле входа вы увидите подсказку psql и сможете выполнять SQL‑запросы.
Создание ролей и баз
Создадим роль интерактивно:
root@ubuntu-pc:/home# sudo -u postgres createuser --interactive
Enter name of role to add: sohan
Shall the new role be a superuser? (y/n) yСписок ролей в psql:
postgres=# \duИли через SQL:
SELECT rolname FROM pg_roles;Удаление роли:
postgres=# DROP ROLE sohan;Создание базы данных
Под аккаунтом postgres:
postgres@ubuntu-pc:~$ createdb dummuИли от учётной записи ubuntu:
sudo -u postgres createdb dummuВход под новой ролью
Сначала создайте системного пользователя sohan (если требуется доступ к unix‑сокету):
sudo adduser sohanПодключение как sohan к psql:
sudo -u sohan psqlИли:
sudo -i -u sohan
psqlПодключение к конкретной базе:
psql -d dummuПроверка соединения:
dummu=> \conninfoПример вывода:
You are connected to database "dummu" as user "sohan" via socket in "/var/run/postgresql" at port "5432"Создание таблицы
Создадим простую таблицу:
CREATE TABLE dummu(user_id serial PRIMARY KEY,username VARCHAR (50) UNIQUE NOT NULL, password VARCHAR (50) NOT NULL, email VARCHAR (355) UNIQUE NOT NULL, created_on TIMESTAMP NOT NULL, last_login TIMESTAMP);Просмотр списка объектов:
\dЧтобы отображать только таблицы:
\dtПример вывода:
sohan=> \dt
List of relations
Schema | Name | Type | Owner
--------+--------+-------+-------
public | dummu | table | sohanРабота с данными
Вставка строки:
Insert into dummu(user_id,username,password,email,created_on,last_login) values (1,'sohan','123456','[email protected]','2019-06-24 11:11:11','2019-06-24 11:11:11');Выборка данных:
SELECT * FROM dummu;Удаление строк:
DELETE FROM dummu WHERE email = '[email protected]';Удаление столбца:
ALTER TABLE dummu DROP email;Проверка таблицы:
SELECT * FROM dummu;Пример вывода:
user_id | username | password | created_on | last_login
---------+----------+----------+---------------------+---------------------
1 | sohan | 123456 | 2019-06-24 11:11:11 | 2019-06-24 11:11:11Обновление данных:
UPDATE dummu SET password = 'postgres' where username = 'sohan';Проверка изменений:
SELECT * FROM dummu;Вывод:
user_id | username | password | created_on | last_login
---------+----------+----------+---------------------+---------------------
1 | sohan | postgres | 2019-06-24 11:11:11 | 2019-06-24 11:11:11Безопасность и эксплуатация
Важно следовать базовым практикам безопасности:
- Никогда не используйте trust для внешних подключений.
- Используйте scram‑sha‑256 (если клиент поддерживает) или md5, но prefer scram.
- Ограничьте доступ в pg_hba.conf до доверенных IP.
- Отключите удалённый доступ для суперпользователя через настройки listen_addresses в postgresql.conf.
- Регулярно делайте бэкапы: pg_dump для логических бэков, pg_basebackup для физической реплики.
- Обновляйте PostgreSQL в тестовой среде перед продакшен‑апгрейдом.
Пример минимальных настроек в postgresql.conf:
- listen_addresses = ‘localhost’ — по умолчанию слушать только локальные соединения
- max_connections — установить по потреблению
- shared_buffers — настроить под объём ОЗУ
Ключевой порт по умолчанию: 5432.
Резервное копирование и восстановление
Быстрый логический бэкап одной базы:
pg_dump -U postgres -F c -b -v -f "dummu_backup.dump" dummuВосстановление:
pg_restore -U postgres -d dummu -v dummu_backup.dumpФизическое резервирование и репликация требуют pg_basebackup и настройки реплики.
Миграция между версиями
- Прямой апгрейд пакетов возможен в некоторых случаях, но рекомендуется тестировать.
- Для критичных систем используйте pg_dump/pg_restore или pg_upgrade после тестирования.
- Проверьте совместимость расширений (например, PostGIS) перед миграцией.
Чек‑листы по ролям
Администратор базы данных (DBA):
- Установить репозиторий и ключи
- Настроить pg_hba.conf и postgresql.conf
- Настроить бэкапы и тестировать восстановление
- Мониторить логи и метрики (плотность запросов, блокировки)
DevOps / Системный администратор:
- Управлять сервисом systemd
- Обновлять пакеты и патчи ОС
- Настроить мониторинг и алерты
Разработчик:
- Создавать роли с минимумом прав
- Писать миграции схемы и тесты
- Использовать параметризованные запросы для предотвращения SQL‑инъекций
Шпаргалка основных команд
- Установить сервер: sudo apt-get install postgresql postgresql-contrib
- Переключиться на postgres: sudo -i -u postgres
- Войти в psql: psql
- Создать роль: createuser –interactive
- Создать базу: createdb
- Дамп базы: pg_dump
- Восстановление: pg_restore
- Список таблиц: \dt
- Описание объекта: \d
Практическая методика установки (мини‑план)
- Подготовка: выбрать версию Ubuntu и PostgreSQL, протестировать в staging.
- Резервная копия текущих данных (если апгрейд): pg_dump или физический бэкап.
- Добавить репозиторий и ключ, установить пакет.
- Настроить конфигурацию безопасности (pg_hba.conf, listen_addresses).
- Проверить запуск сервиса и логи.
- Тестовые подключения и нагрузочное тестирование.
- Перевести трафик на новый инстанс.
Критерии приёмки
- Сервис запущен и отвечает: systemctl status postgresql
- Команда psql возвращает версию: sudo -u postgres psql -c “SELECT version();”
- Пользователи подключаются через ожидаемые методы аутентификации
- Произведены и успешно проверены бэкапы
Ментальные модели и когда это не подходит
Когда PostgreSQL хорош:
- Требуется транзакционная целостность и богатая SQL‑функциональность
- Нужна расширяемость через расширения (JSONB, Full Text Search, PostGIS)
Когда перейти на другие решения:
- Преимущественно ключ‑значение с требованием сверхнизкой задержки — рассмотрите Redis
- Масштабирование только по записи и простая схема — можно рассмотреть NoSQL
Диагностика частых проблем
- Не удаётся подключиться: проверить listen_addresses и pg_hba.conf, firewall, порт 5432
- Неправильные права: убедиться, что роль существует и имеет нужные привилегии
- Нехватка памяти: проверить shared_buffers, work_mem, max_connections
Пример потока принятия решения (Mermaid)
flowchart TD A[Нужно ли сохранять транзакции и связи] -->|Да| B[PostgreSQL] A -->|Нет| C[Рассмотреть NoSQL] B --> D{Требуется геопространство} D -->|Да| E[PostGIS] D -->|Нет| F[Стандартная конфигурация]Тестовые случаи и приёмо‑сдача
- Установка выполнена без ошибок
- psql может выполнять SELECT version();
- Создание роли и базы проходит успешно
- Пользователь подключается и выполняет базовые CRUD‑операции
- Бэкап и восстановление проверены на тестовой базе
Краткое резюме
В этой статье вы узнали, как установить PostgreSQL из официального apt‑репозитория на Ubuntu, настроить методы аутентификации в pg_hba.conf, создавать роли и базы, выполнять базовые SQL‑операции, а также получили рекомендации по безопасности и эксплуатации. Применяйте чек‑листы и тестируйте обновления в изолированной среде перед продакшеном.
Полезные ссылки
- Официальная страница загрузки PostgreSQL: https://www.postgresql.org/download/
- Документация по pg_hba.conf: https://www.postgresql.org/docs/current/auth-pg-hba-conf.html
АвторРедакцияПохожие материалы
РазвлеченияКак устроить идеальную вечеринку для просмотра ТВ
ИнструментыКак распаковать несколько RAR‑файлов сразу
ПриватностьПриватный просмотр в Linux: как и зачем
РуководствоWindows 11 не видит iPod — способы исправить
КонсолиPS5: как настроить игровые пресеты
РуководствоКак переключить камеру в Omegle на iPhone и Android