Установка PostgreSQL: подробное пошаговое руководство

Установите PostgreSQL на Linux, macOS или Windows, затем создайте пользователя, проверьте доступ и настройте безопасные сетевые подключения.

Установка PostgreSQL: Полное пошаговое руководство

Установка PostgreSQL обычно проста, но детали различаются в зависимости от Linux, macOS и Windows. Цель — не просто запустить службу; вам также нужен работоспособный пользователь базы данных, чистый способ подключения и безопасные настройки по умолчанию для сетевого доступа.

Используйте это руководство для установки PostgreSQL для разработки или небольшой серверной настройки, затем адаптируйте пути и номера версий под текущие пакеты вашей операционной системы.

Предварительные требования

Перед началом процесса установки убедитесь, что ваша система соответствует этим основным требованиям:

  • Права администратора: Вам понадобятся привилегии sudo в Linux/macOS или права администратора в Windows для установки программного обеспечения и настройки системных служб.
  • Подключение к интернету: Требуется для загрузки установочных пакетов.
  • Достаточно места на диске: Хотя начальная установка относительно невелика, ваша база данных будет расти. Убедитесь, что у вас достаточно места на диске для ваших данных.

Установка на Linux

Дистрибутивы Linux обычно предлагают PostgreSQL через свои стандартные репозитории пакетов, что делает установку простой.

Debian/Ubuntu

Для систем на основе Debian, таких как Ubuntu, вы можете установить PostgreSQL с помощью apt.

  1. Обновите списки пакетов: Всегда начинайте с обновления списков вашего менеджера пакетов, чтобы получить последние доступные пакеты.

    sudo apt update
    
  2. Установите PostgreSQL: Установите пакет postgresql, который часто включает сервер, клиентские утилиты и документацию. Вы можете указать версию (например, postgresql-16) или установить версию по умолчанию, просто используя postgresql.

    sudo apt install postgresql postgresql-contrib
    

    Пакет postgresql-contrib предоставляет дополнительные утилиты и функциональные возможности.

    Примечание: В Debian/Ubuntu служба PostgreSQL обычно запускается автоматически после установки, и создается пользователь postgres по умолчанию (как системный, так и пользователь базы данных).

  3. Проверьте установку: Проверьте статус службы.

    sudo systemctl status postgresql
    

    Вы должны увидеть вывод, указывающий на active (exited) или active (running). exited является нормальным для основного модуля службы, если он управляет несколькими кластерами, которые работают как отдельные процессы.

RHEL/CentOS/Fedora

Для систем на основе Red Hat используйте dnf (или yum для старых версий CentOS/RHEL).

  1. Установите репозиторий PostgreSQL: PostgreSQL предоставляет собственный репозиторий для более новых версий, чем те, что могут быть доступны в стандартных репозиториях ОС. Рекомендуется использовать его для последних стабильных релизов.

    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # Для EL-9 используйте: sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # При необходимости замените EL-8-x86_64 на вашу конкретную версию ОС и архитектуру.
    
  2. Отключите модуль PostgreSQL по умолчанию (если применимо): Некоторые версии RHEL/CentOS имеют модуль PostgreSQL по умолчанию. Отключите его, чтобы избежать конфликтов с репозиторием PGDG.

    sudo dnf -qy module disable postgresql
    
  3. Установите PostgreSQL: Установите сервер и пакеты contrib. Замените 16 на желаемую версию.

    sudo dnf install -y postgresql16-server postgresql16-contrib
    
  4. Инициализируйте кластер базы данных: В отличие от Debian/Ubuntu, в системах на основе RHEL часто требуется вручную инициализировать кластер базы данных.

    sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
    

    Откорректируйте путь /usr/pgsql-16/bin и postgresql-16-setup в соответствии с вашей установленной версией.

  5. Запустите и включите службу PostgreSQL: Запустите службу и настройте ее на запуск при загрузке.

    sudo systemctl enable postgresql-16
    sudo systemctl start postgresql-16
    
  6. Проверьте установку: Проверьте статус службы.

    sudo systemctl status postgresql-16
    

Установка на macOS

В macOS Homebrew является рекомендуемым и самым простым способом установки PostgreSQL.

  1. Установите Homebrew (если еще не сделали этого):

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    

    Следуйте инструкциям на экране, включая добавление Homebrew в ваш PATH.

  2. Установите PostgreSQL: Используйте Homebrew для установки PostgreSQL. Вы можете указать версию (например, postgresql@16) или установить последнюю стабильную версию по умолчанию.

    brew install postgresql
    
  3. Запустите службу PostgreSQL: Homebrew устанавливает PostgreSQL как фоновую службу.

    brew services start postgresql
    

    Чтобы остановить: brew services stop postgresql Чтобы перезапустить: brew services restart postgresql

  4. Проверьте установку: Проверьте, доступен ли psql и подключен ли он.

    psql -V
    

    Чтобы подключиться к базе данных по умолчанию:

    psql postgres
    

    Совет: Для визуального приложения рассмотрите Postgres.app, который предоставляет простой способ запуска и управления PostgreSQL без командной строки.

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

В Windows графический установщик EnterpriseDB (EDB) является наиболее распространенным методом для локальной настройки PostgreSQL.

  1. Загрузите установщик: Посетите официальную страницу загрузки PostgreSQL (www.postgresql.org/download/windows/) и загрузите последний установщик EDB для вашей версии Windows.

  2. Запустите установщик: Выполните загруженный .exe файл. Мастер установки проведет вас через процесс.

    • Каталог установки: Выберите, куда будет установлен PostgreSQL (например, C:\Program Files\PostgreSQL\16).
    • Каталог данных: Выберите место для файлов вашей базы данных (например, C:\Program Files\PostgreSQL\16\data). Это критически важно и в идеале должно быть на быстром, надежном диске.
    • Пароль для суперпользователя postgres: Установите надежный пароль для суперпользователя базы данных postgres по умолчанию. Запомните этот пароль, так как он понадобится для первоначального подключения.
    • Порт: Порт PostgreSQL по умолчанию — 5432. Обычно безопасно оставлять его по умолчанию, если нет конфликтов.
    • Локаль: Выберите локаль по умолчанию для вашего кластера базы данных.
  3. Stack Builder: После установки установщик EDB может запустить Stack Builder. Этот инструмент помогает установить дополнительные драйверы, инструменты и расширения (например, pgAdmin 4). Настоятельно рекомендуется установить pgAdmin 4 для графического интерфейса управления вашими базами данных.

  4. Проверьте установку: После установки вы можете открыть pgAdmin 4 (обычно находится в меню «Пуск» в разделе «PostgreSQL 16» или аналогичном) и попытаться подключиться к вашему локальному серверу, используя суперпользователя postgres и установленный вами пароль.

Первоначальная настройка и действия после установки

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

1. Установите переменную окружения PATH (необязательно, в основном для Windows/macOS, если psql не найден)

Чтобы легко запускать psql и другие двоичные файлы PostgreSQL из любого терминала, добавьте каталог bin PostgreSQL в PATH вашей системы.

  • Linux: Часто обрабатывается менеджером пакетов, но если нет, добавьте /usr/pgsql-X.Y/bin (RHEL) или /usr/lib/postgresql/X.Y/bin (Debian/Ubuntu) в ваш PATH.
  • macOS (Homebrew): brew обрабатывает это автоматически.
  • Windows: Во время установки EDB есть опция добавления в PATH. Если она не выбрана, вы можете добавить C:\Program Files\PostgreSQL\16\bin (откорректируйте версию) вручную через Свойства системы > Переменные среды.

2. Доступ к терминалу psql

psql — это интерфейс командной строки для PostgreSQL, необходимый для администрирования и выполнения запросов.

  • Linux/macOS: Переключитесь на системного пользователя postgres (созданного во время установки).

    sudo -i -u postgres
    psql
    

    Теперь вы подключены к базе данных postgres как пользователь postgres. Введите \q для выхода.

  • Windows: Откройте SQL Shell (psql) из меню «Пуск» (PostgreSQL 16 > SQL Shell (psql)). Он запросит детали сервера и пароль пользователя postgres.

3. Создайте нового пользователя базы данных и базу данных

Рекомендуется не использовать суперпользователя postgres для повседневного использования приложения. Создайте нового выделенного пользователя и базу данных.

  1. Войдите как суперпользователь postgres (как показано выше).

  2. Создайте нового пользователя (роль):

    CREATE USER myuser WITH PASSWORD 'strong_password';
    

    Совет: Замените myuser и strong_password на безопасные учетные данные.

  3. Создайте новую базу данных и назначьте владельца:

    CREATE DATABASE mydatabase OWNER myuser;
    
  4. Предоставьте привилегии (если необходимо, или владелец CREATE DATABASE обрабатывает это для базовых операций):

    GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
    
  5. Выйдите из psql:

    \q
    

4. Настройте pg_hba.conf для сетевого доступа

Файл pg_hba.conf управляет аутентификацией клиентов. По умолчанию PostgreSQL может разрешать подключения только с localhost (127.0.0.1).

  • Расположение: Этот файл обычно находится в каталоге данных PostgreSQL (например, /var/lib/postgresql/16/main/pg_hba.conf в Debian/Ubuntu, /var/lib/pgsql/16/data/pg_hba.conf в RHEL или C:\Program Files\PostgreSQL\16\data\pg_hba.conf в Windows).

  • Отредактируйте файл (как root/администратор):

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

    (Откорректируйте путь для вашей ОС и версии).

    Чтобы разрешить myuser подключаться из доверенной подсети с использованием аутентификации по паролю, добавьте строку, подобную этой:

    # TYPE DATABASE  USER            ADDRESS                 METHOD
    host  mydatabase  myuser          192.168.1.0/24          scram-sha-256
    

    scram-sha-256 — предпочтительный метод пароля для современных развертываний PostgreSQL. Избегайте 0.0.0.0/0, если сервер также не защищен строгими правилами брандмауэра и вам действительно нужен широкий доступ.

  • Перезагрузите PostgreSQL: После изменения pg_hba.conf вы должны перезагрузить службу PostgreSQL, чтобы изменения вступили в силу.

    sudo systemctl reload postgresql # Linux
    # Для Homebrew на macOS:
    # brew services restart postgresql
    # Для Windows перезапустите службу PostgreSQL через Services.msc
    

5. Настройте postgresql.conf (прослушивание сети)

По умолчанию PostgreSQL часто прослушивает только localhost. Чтобы принимать подключения с других машин, вам нужно изменить postgresql.conf.

  • Расположение: Этот файл обычно находится в том же каталоге, что и pg_hba.conf.

  • Отредактируйте файл:

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

    Найдите параметр listen_addresses и измените его, только если удаленным клиентам нужно подключаться:

    #listen_addresses = 'localhost' # какие IP-адреса прослушивать;
    listen_addresses = 'localhost,192.168.1.10'
    

    Используйте реальный частный IP-адрес сервера вместо 192.168.1.10. listen_addresses = '*' также работает, но его следует сочетать с ограничительными правилами pg_hba.conf и брандмауэра.

  • Перезапустите PostgreSQL: Изменения в postgresql.conf требуют полного перезапуска службы.

    sudo systemctl restart postgresql # Linux
    # brew services restart postgresql # macOS
    # Для Windows перезапустите службу PostgreSQL через Services.msc
    

Проверка вашей установки

После всех настроек выполните окончательную проверку:

  1. Проверьте статус службы PostgreSQL (systemctl status postgresql или brew services list или службы Windows).

  2. Подключитесь как ваш новый пользователь к вашей новой базе данных:

    psql -h localhost -U myuser -d mydatabase
    

    Будет запрошен пароль myuser. В случае успеха вы увидите приглашение mydatabase=>. Введите \q для выхода.

    При подключении с другой машины замените localhost на IP-адрес сервера.

Советы и лучшие практики

  • Надежные пароли: Всегда используйте надежные уникальные пароли для всех пользователей базы данных, особенно для суперпользователя postgres.
  • Выделенный каталог данных: Для производства рассмотрите возможность размещения каталога данных на выделенном томе или RAID-массиве для производительности и надежности.
  • Регулярное резервное копирование: Внедрите надежную стратегию резервного копирования с первого дня. Утилиты PostgreSQL pg_dump и pg_basebackup — отличные инструменты для этого.
  • Оставайтесь в курсе: Поддерживайте вашу установку PostgreSQL в актуальном состоянии, чтобы получать исправления ошибок, обновления безопасности и новые функции. Используйте менеджер пакетов вашей системы или следуйте процессу обновления установщика EDB.
  • Настройка брандмауэра: Если вы разрешаете удаленные подключения, убедитесь, что брандмауэр вашей системы (например, ufw, firewalld, брандмауэр Windows) настроен на разрешение входящего трафика на порт 5432 (или выбранный вами порт).

Вывод

После установки PostgreSQL проверьте службу, подключитесь с помощью psql, создайте роль приложения и ограничьте удаленный доступ. Для производства вашим следующим шагом должны быть резервное копирование и мониторинг, прежде чем база данных начнет хранить важные данные.