Установка и базовое управление PostgreSQL на Ubuntu
О чём эта статья
Эта статья объясняет, что такое PostgreSQL и как пошагово установить его на Ubuntu, проверить работу, подключиться к серверу, управлять пользователями и базами данных, а также рекомендует инструменты для удобного администрирования.
Что такое PostgreSQL
PostgreSQL — это свободная объектно-реляционная система управления базами данных (СУБД) с поддержкой SQL. Она подходит для проектов, где важны целостность данных, расширяемость и возможность писать расширения на разных языках. Кратко: надежная СУБД для производства и разработки.
Важно: в Ubuntu пакеты PostgreSQL могут иметь номер версии в пути конфигурации (например, 12). Используйте вашу реальную версию в командах и путях.
Совместимые версии Ubuntu
Статья ориентирована на Ubuntu (включая 21.04 и близкие выпуски). Команды apt корректно работают на большинстве современных LTS- и non-LTS-веток, но названия пакетов и версии конфигурации могут отличаться.
Шаг 1. Установка PostgreSQL на Ubuntu
Некоторые пакеты PostgreSQL уже есть в стандартном репозитории Ubuntu. Установите сервер и дополнительные модули командой:
sudo apt install postgresql postgresql-contribЭтот пакет установит сервер, системные юниты и стандартные утилиты.
Проверка установки
Найдите конфигурационные файлы, чтобы убедиться, что пакеты установлены:
ls /etc/postgresql/12/main/Здесь число 12 означает версию PostgreSQL. У вас может быть другая версия — подставьте её.
Проверка статуса сервиса
После установки проверьте, запущен ли сервер:
service postgresql statusЕсли вывод показывает статус active, сервис работает. Если status показывает inactive или failed, запустите:
service postgresql startТакже доступны команды: stop, restart, reload, force-reload.
Шаг 2. Вход как суперпользователь PostgreSQL
PostgreSQL создаёт системного пользователя и роль базы данных с именем postgres. Для выполнения административных действий переключитесь на этого Unix-пользователя.
Открытие psql от имени postgres
sudo -u postgres psqlВы попадёте в интерактивную консоль psql. Установите пароль для роли postgres:
ALTER USER postgres PASSWORD 'newpassword';Замените newpassword на надёжный пароль. Выйдите из интерактива командой:
\qПодключение из-под обычного пользователя к локальному серверу:
psql -U postgres -h localhostВас попросят ввести установленный пароль.
Шаг 3. Подключение к серверу PostgreSQL на уровне системы
Если нужно работать под системным аккаунтом postgres (например, для запуска psql без пароля), выполните:
sudo su postgresПодсказка оболочки изменится — обычно вы увидите что-то вроде:
postgres@ubuntu: /home/user$Это значит, что вы работаете от имени Unix-пользователя postgres.
Управление пользователями PostgreSQL
После подключения в psql можно создавать роли, назначать права и удалять пользователей.
Создание нового пользователя
CREATE USER user1 WITH PASSWORD 'test123';Замените user1 и test123 на нужные имя и пароль. Посмотреть список ролей можно командой:
\duВ выводе у нового пользователя изначально нет привилегий.
Выдача привилегий суперпользователя
ALTER USER user1 WITH SUPERUSER;Команда превратит роль в суперпользователя. После этого проверьте наличие флажка Superuser в выводе \du.
Важно: старайтесь реже давать SUPERUSER и использовать ролям минимально необходимые права.
Удаление пользователя
DROP USER user1;Если пользователь владеет объектами (базы/схемы), сначала переместите владение или удалите объекты, иначе DROP вернёт ошибку.
Управление базами данных
PostgreSQL предоставляет простые команды создания и удаления баз.
Создание базы данных
CREATE DATABASE db1;Проверьте список баз командой:
\lУдаление базы данных
DROP DATABASE db1;Если в базе есть активные подключения, DROP завершится с ошибкой; завершите сеансы или используйте блокирующие механизмы аккуратно.
Выдача доступа к базе
GRANT ALL PRIVILEGES ON DATABASE db1 TO user1;Этот пример даёт все привилегии на указанную базу. Для finer-grained контроля используйте GRANT SELECT/INSERT/UPDATE/DELETE на уровне схем и таблиц.
Помощь в командной строке
Полная справка по утилите psql доступна через man:
man psqlВнутри psql используйте:\h для справки по SQL-командам и \? для списка внутренних команд psql.
Рекомендуем: установить pgAdmin
pgAdmin — удобная графическая панель для управления серверами PostgreSQL. Она помогает управлять ролями, базами, бэкапами и просмотром запросов.
Добавьте официальный репозиторий pgAdmin и его ключ:
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'Установка десктоп-версии:
sudo apt install pgadmin4-desktopУстановка веб-версии:
sudo apt install pgadmin4-webНастройка веб-режима (один раз):
sudo /usr/pgadmin4/bin/setup-web.shБазовые меры безопасности и конфигурации
- Измените пароль для роли postgres сразу после установки.
- Проверьте файл pg_hba.conf, обычно в /etc/postgresql/<версия>/main/pg_hba.conf, и настройте метод аутентификации (peer, md5, scram-sha-256).
- Ограничьте доступ по сети: в файле postgresql.conf настройте listen_addresses (по умолчанию localhost).
- Для шифрования на транспортном уровне используйте SSL, но настройка требует сертификатов и дополнительных шагов.
Важно: не давайте SUPERUSER приложениям или сервисам — создайте роль с ограниченными правами.
Резервное копирование и восстановление (кратко)
- Для логических бэкапов используйте pg_dump и pg_dumpall.
- Для быстрых снимков используйте pg_basebackup (файловый бэкап), если нужно восстановление на уровне кластера.
Пример простой команды:
pg_dump -U user1 -F c -b -v -f db1.backup db1Диагностика и отладка — частые проблемы и решения
- Сервис не стартует: смотрите логи в /var/log/postgresql/ или journalctl -u postgresql.
- Не удаётся подключиться: проверьте listen_addresses, pg_hba.conf и брандмауэр (ufw, iptables).
- DROP DATABASE не проходит: проверьте активные подключения и завершите их.
Мини-методология развертывания PostgreSQL (шаги)
- Подготовка: обновите apt и определите версию PostgreSQL.
- Установка: sudo apt install postgresql postgresql-contrib.
- Первичный вход: sudo -u postgres psql — смените пароль.
- Настройка доступа: проверьте pg_hba.conf и listen_addresses.
- Создание ролей/баз: создайте роли с минимальными правами и базы данных.
- Наблюдение: настройте мониторинг и бэкапы.
- Документирование: зафиксируйте пароли, политики доступа и процедуры восстановления.
Пошаговый чеклист по ролям
Для администратора Linux/DevOps:
- Установить пакеты, настроить systemd и бэкапы.
- Ограничить сетевой доступ и настроить мониторинг.
Для DBA:
- Создать роли, назначить привилегии, настроить бэкапы и проверку целостности.
- Планировать индексацию и обслуживание (VACUUM, ANALYZE).
Для разработчика:
- Настроить локальное подключение, создать тестовую базу.
- Проверить миграции и права доступа приложения.
Критерии приёмки
- Сервис PostgreSQL в состоянии active (service postgresql status).
- Установлен и проверен пароль роли postgres.
- Можно подключиться через psql и выполнить CREATE DATABASE и CREATE USER.
- Настроены базовые правила доступа в pg_hba.conf и listen_addresses.
Когда этот подход не подходит (ограничения)
- Если нужен документно-ориентированный хранилище — лучше NoSQL (например, MongoDB).
- Для очень простых проектов SQLite может быть проще и легче поддерживать.
- Если требуется горизонтальная масштабируемость на уровне записи «из коробки», возможно, стоит рассмотреть специализированные распределённые СУБД.
Краткая таблица сравнения вариантов администрирования
- Командная строка (psql): гибко, подходит для автоматизации.
- pgAdmin GUI: удобно для визуального управления, бэкапов и мониторинга.
- CI/CD и миграции (например, Flyway, Liquibase): подходят для управления схемой в командах разработки.
1‑строчный глоссарий
- Роль — аккаунт PostgreSQL, используемый для аутентификации и авторизации.
- База — отдельное пространство данных, содержащее схемы и таблицы.
- pg_hba.conf — файл контроля доступа к соединениям.
- psql — интерактивная консоль PostgreSQL.
Короткое руководство на одну страницу (SOP)
- sudo apt update && sudo apt install postgresql postgresql-contrib
- service postgresql status — проверить
- sudo -u postgres psql; ALTER USER postgres PASSWORD ‘…’; \q
- Создать роли/базы: CREATE USER …; CREATE DATABASE …;
- Настроить pg_hba.conf и postgresql.conf; reload или restart
- Настроить регулярные бэкапы и мониторинг
Пример дерева принятия решения для pgAdmin
flowchart TD
A[Нужен GUI для управления?] -->|Да| B[Установить pgAdmin]
A -->|Нет| C[Оставаться с psql и автоматизацией]
B --> D{Веб или Desktop}
D -->|Веб| E[Установить pgadmin4-web и запустить setup-web.sh]
D -->|Desktop| F[Установить pgadmin4-desktop]Короткое резюме
PostgreSQL — мощная и гибкая СУБД. На Ubuntu её легко установить через apt. После установки важно сменить пароль роли postgres, настроить доступы в pg_hba.conf и предусмотреть бэкапы. Для удобства администрирования используйте pgAdmin или набор автоматизированных инструментов.
Важно: регулярно тестируйте процедуры восстановления из бэкапов и обновляйте конфигурации безопасности.
Источники и ссылки: официальная документация PostgreSQL и страницы pgAdmin для загрузки и инструкций.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone