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

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

6 min read Databases Обновлено 24 Nov 2025
PostgreSQL на Ubuntu: установка и базовые команды
PostgreSQL на Ubuntu: установка и базовые команды

Иллюстрация PostgreSQL и терминал установки

Краткое содержание

Обзор

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

Конфигурация методов аутентификации в файле pg_hba.conf

В процессе установки автоматически создаётся системная учётная запись 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‑инъекций

Шпаргалка основных команд