Установка и запуск PostgreSQL: пошаговая инструкция для Linux, Windows, macOS | AdminWiki

PostgreSQL: Полное руководство по установке и запуску для разработчиков

18 декабря 2025 8 мин. чтения #devops #postgresql #администрирование #базы данных #настройка PostgreSQL #установка PostgreSQL

Представь, что тебе нужно развернуть надежную базу данных для нового проекта. PostgreSQL — отличный выбор, но с чего начать? Давай разберем весь процесс от установки до первого запуска, как это делает опытный DevOps-инженер.

Выбор метода установки PostgreSQL

Перед тем как начать установку PostgreSQL, определись с подходящим методом. Каждый имеет свои преимущества:

Метод Плюсы Минусы Для кого
Пакетный менеджер Простота, автоматические обновления Может быть старая версия Начинающие, разработчики
Docker Изоляция, легкое управление версиями Требует Docker DevOps, микросервисы
Исходный код Полный контроль, последняя версия Сложно, требует компиляции Продвинутые админы

Установка PostgreSQL на Ubuntu/Debian

Для большинства случаев рекомендую использовать официальный репозиторий PostgreSQL. Вот пошаговая инструкция:

Важно: Все команды выполняй от имени обычного пользователя, используя sudo для привилегированных операций.

Шаг 1: Добавление репозитория

bash
# Импортируем ключ репозитория
sudo apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

# Добавляем репозиторий для PostgreSQL 16 (укажи нужную версию)
sudo sh -c 'echo \"deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main\" > /etc/apt/sources.list.d/pgdg.list'

# Обновляем список пакетов
sudo apt-get update

Шаг 2: Установка PostgreSQL

bash
# Устанавливаем PostgreSQL и дополнительные утилиты
sudo apt-get install postgresql-16 postgresql-client-16 postgresql-contrib-16

# Проверяем установку
psql --version

Шаг 3: Запуск PostgreSQL

После установки сервис обычно запускается автоматически. Проверим:

bash
# Проверяем статус службы
sudo systemctl status postgresql

# Если не запущен, запускаем
sudo systemctl start postgresql

# Включаем автозагрузку при старте системы
sudo systemctl enable postgresql

Установка PostgreSQL на CentOS/RHEL

bash
# Устанавливаем репозиторий
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Отключаем встроенный модуль PostgreSQL
sudo dnf -qy module disable postgresql

# Устанавливаем PostgreSQL 16
sudo dnf install -y postgresql16-server postgresql16-contrib

# Инициализируем базу данных
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

# Запускаем и включаем службу
sudo systemctl start postgresql-16
sudo systemctl enable postgresql-16

Установка PostgreSQL на Windows

Для Windows рекомендую использовать установщик с официального сайта:

  1. Скачай установщик с официального сайта
  2. Запусти установщик и следуй инструкциям мастера
  3. Выбери компоненты для установки (рекомендую все)
  4. Укажи пароль для суперпользователя postgres
  5. Выбери порт (по умолчанию 5432)
  6. Заверши установку
Внимание: Запиши пароль суперпользователя! Без него не получится подключиться к базе.

Запуск PostgreSQL через Docker

Docker — отличный вариант для тестирования и разработки:

bash
# Запускаем контейнер с PostgreSQL 16
docker run --name postgres-16 \
  -e POSTGRES_PASSWORD=mysecretpassword \
  -e POSTGRES_USER=myuser \
  -e POSTGRES_DB=mydatabase \
  -p 5432:5432 \
  -v postgres_data:/var/lib/postgresql/data \
  -d postgres:16-alpine

# Проверяем запущенный контейнер
docker ps | grep postgres

Первоначальная настройка PostgreSQL

После установки нужно выполнить базовую настройку безопасности и производительности.

Настройка аутентификации

Отредактируем файл pg_hba.conf для настройки методов подключения:

config
# Находим файл конфигурации
sudo find / -name pg_hba.conf 2>/dev/null

# Обычный путь в Ubuntu
sudo nano /etc/postgresql/16/main/pg_hba.conf

Добавь или измени строки для безопасного подключения:

config
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost:
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

Настройка основных параметров

Отредактируем postgresql.conf для оптимизации производительности:

config
sudo nano /etc/postgresql/16/main/postgresql.conf

Рекомендуемые настройки для разработки:

config
# Слушаем все интерфейсы (для удаленного подключения)
listen_addresses = '*'

# Максимальное количество соединений
max_connections = 100

# Выделяемая память
shared_buffers = 128MB
work_mem = 4MB
maintenance_work_mem = 64MB

# Настройки журналирования
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

Перезапуск PostgreSQL

bash
# Применяем изменения конфигурации
sudo systemctl restart postgresql

# Проверяем логи на ошибки
sudo tail -f /var/log/postgresql/postgresql-16-main.log

Работа с PostgreSQL после установки

Подключение к базе данных

bash
# Подключаемся как суперпользователь postgres
sudo -u postgres psql

# Или с указанием хоста и порта
psql -h localhost -p 5432 -U postgres -W

Базовые команды psql

sql
-- Показать все базы данных
\l

-- Подключиться к базе данных
\c database_name

-- Показать таблицы в текущей базе
\dt

-- Создать нового пользователя
CREATE USER myuser WITH PASSWORD 'mypassword';

-- Создать базу данных
CREATE DATABASE mydatabase OWNER myuser;

-- Дать права пользователю на базу данных
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;

-- Выйти из psql
\q

Создание тестовой базы данных

bash
# Создаем базу данных и пользователя через командную строку
sudo -u postgres createuser --createdb --createrole --login myuser
sudo -u postgres psql -c "ALTER USER myuser WITH PASSWORD 'securepassword';"
sudo -u postgres createdb -O myuser myappdb

# Проверяем подключение
psql -h localhost -U myuser -d myappdb -W

Управление службой PostgreSQL

Системные команды

  • sudo systemctl start postgresql — запуск
  • sudo systemctl stop postgresql — остановка
  • sudo systemctl restart postgresql — перезапуск
  • sudo systemctl reload postgresql — перезагрузка конфига
  • sudo systemctl status postgresql — статус

Команды pg_ctl

  • pg_ctl start -D /var/lib/pgsql/data
  • pg_ctl stop -D /var/lib/pgsql/data
  • pg_ctl restart -D /var/lib/pgsql/data
  • pg_ctl reload -D /var/lib/pgsql/data
  • pg_ctl status -D /var/lib/pgsql/data

Решение частых проблем при установке

Проблема: Не могу подключиться к серверу

bash
# Проверяем, слушает ли PostgreSQL порт 5432
sudo netstat -tulpn | grep 5432

# Проверяем настройки listen_addresses
sudo grep listen_addresses /etc/postgresql/*/main/postgresql.conf

# Проверяем правила брандмауэра
sudo ufw status
sudo ufw allow 5432/tcp

Проблема: Ошибка аутентификации

bash
# Проверяем настройки pg_hba.conf
sudo cat /etc/postgresql/*/main/pg_hba.conf | grep -v '^#' | grep -v '^$'

# Сбрасываем пароль пользователя postgres
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'newpassword';"

Проблема: Недостаточно прав

bash
# Проверяем владельца каталога данных
sudo ls -la /var/lib/postgresql/

# Исправляем права (осторожно!)
sudo chown -R postgres:postgres /var/lib/postgresql/
sudo chmod 700 /var/lib/postgresql/*/data

Часто задаваемые вопросы (FAQ)

Как проверить, что PostgreSQL работает корректно?

Выполни несколько проверок:

bash
# 1. Проверь статус службы
sudo systemctl status postgresql

# 2. Подключись через psql
sudo -u postgres psql -c "SELECT version();"

# 3. Проверь логи на ошибки
sudo tail -20 /var/log/postgresql/postgresql-16-main.log

Как изменить порт PostgreSQL?

Отредактируй файл postgresql.conf:

config
# В файле /etc/postgresql/16/main/postgresql.conf
port = 5433  # измени на нужный порт

Не забудь перезапустить PostgreSQL и обновить правила брандмауэра.

Как удалить PostgreSQL полностью?

bash
# Ubuntu/Debian
sudo apt-get purge postgresql-* postgresql-client-*
sudo rm -rf /etc/postgresql/
sudo rm -rf /var/lib/postgresql/

# CentOS/RHEL
sudo dnf remove postgresql16-*
sudo rm -rf /var/lib/pgsql/

Как настроить удаленный доступ к PostgreSQL?

Выполни три шага:

  1. В postgresql.conf установи listen_addresses = '*'
  2. В pg_hba.conf добавь правило для нужных IP
  3. Открой порт в брандмауэре: sudo ufw allow 5432/tcp

Заключение

Теперь у тебя есть полное руководство по установке и запуску PostgreSQL на любой платформе. Помни главные шаги:

  • Выбери подходящий метод установки для твоих задач
  • Настрой безопасность (pg_hba.conf) сразу после установки
  • Оптимизируй базовые параметры производительности
  • Тестируй подключение и создавай пользователей с минимальными необходимыми правами

PostgreSQL — мощная и надежная СУБД. Правильная установка и настройка с самого начала сэкономит тебе много времени в будущем. Удачи в работе с базами данных!

Поделиться:
Сохранить гайд? В закладки браузера