Как установить PostgreSQL на Debian 10

PostgreSQL, часто известный просто как Postgres, представляет собой универсальную объектно-реляционную систему управления базами данных с открытым исходным кодом. Он имеет множество мощных функций, таких как онлайн-резервное копирование, восстановление на определенный момент времени, вложенные транзакции, запросы SQL и JSON, управление многовариантным параллелизмом (MVCC), асинхронная репликация и многое другое.

Это руководство проведет вас по этапам установки сервера базы данных PostgreSQL в Debian 10. Мы также изучим основы базового администрирования баз данных.

Установка PostgreSQL

На момент написания этой статьи последней версией PostgreSQL, доступной в репозиториях Debian по умолчанию, была PostgreSQL версии 11.5.

Чтобы установить PostgreSQL на ваш сервер Debian, выполните следующие действия от имени пользователя root или пользователя с привилегиями sudo :

  1. Начните с обновления индекса пакета APT:

     sudo apt update
  2. Установите сервер PostgreSQL и пакет contrib, который предоставляет дополнительные функции для базы данных PostgreSQL:

     sudo apt install postgresql postgresql-contrib
  3. После завершения установки запустится служба PostgreSQL. Чтобы проверить установку, используйте инструмент psql для печати версии сервера :

     sudo -u postgres psql -c "SELECT version();"

    Результат должен выглядеть примерно так:

     PostgreSQL 11.5 (Debian 11.5-1+deb10u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit
psql — это интерактивная терминальная программа, которая позволяет вам взаимодействовать с сервером PostgreSQL.

Роли и методы аутентификации PostgreSQL

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

PostgreSQL поддерживает несколько методов аутентификации . Наиболее часто используемые методы:

  • Доверие — роль может подключаться без пароля, если соблюдаются критерии, определенные в pg_hba.conf .
  • Пароль — роль может подключиться, указав пароль. Пароли могут быть сохранены как scram-sha-256 md5 и password (открытый текст)
  • Идентификатор — поддерживается только для подключений TCP / IP. Он работает путем получения имени пользователя операционной системы клиента с дополнительным отображением имени пользователя.
  • Peer — То же, что и Ident, но поддерживается только для локальных подключений.

Аутентификация клиента PostgreSQL определяется в файле конфигурации с именем pg_hba.conf . Для локальных подключений PostgreSQL настроен на использование метода одноранговой аутентификации.

Пользователь «postgres» создается автоматически при установке PostgreSQL. Этот пользователь является суперпользователем для экземпляра PostgreSQL и эквивалентен пользователю root MySQL.

Чтобы войти на сервер PostgreSQL как «postgres», переключитесь на пользовательский postgres и получите доступ к приглашению PostgreSQL с помощью утилиты psql :

sudo su - postgrespsql

Отсюда вы можете взаимодействовать с сервером PostgreSQL. Чтобы выйти из оболочки PostgreSQL, введите:

q

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

sudo -u postgres psql

Пользователь postgres обычно используется только с локального хоста.

Создание роли и базы данных PostgreSQL

Команда createuser позволяет создавать новые роли из командной строки. Только суперпользователи и роли с привилегией CREATEROLE могут создавать новые роли.

В следующем примере мы создадим новую роль с именем kylo , базу данных с именем kylodb и предоставим этой роли права kylodb к базе данных.

  1. Сначала создайте роль, введя следующую команду:

     sudo su - postgres -c "createuser kylo"
  2. Затем создайте базу данных с помощью команды createdb :

     sudo su - postgres -c "createdb kylodb"
  3. Чтобы предоставить пользователю права доступа к базе данных, подключитесь к оболочке PostgreSQL:

     sudo -u postgres psql

    Выполните следующий запрос:

     grant all privileges on database kylodb to kylo ;

Включить удаленный доступ к серверу PostgreSQL

По умолчанию сервер PostgreSQL прослушивает только локальный интерфейс 127.0.0.1 .

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

Откройте файл конфигурации postgresql.conf и добавьте listen_addresses = '*' в раздел CONNECTIONS AND AUTHENTICATION . Это дает серверу команду прослушивать все сетевые интерфейсы.

sudo nano /etc/postgresql/11/main/postgresql.conf
/etc/postgresql/11/main/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'     # what IP address(es) to listen on;

Сохраните файл и перезапустите службу PostgreSQL, чтобы изменения вступили в силу:

sudo service postgresql restart

Проверьте изменения с помощью утилиты ss :

ss -nlt | grep 5432
LISTEN   0         128                 0.0.0.0:5432             0.0.0.0:*
LISTEN   0         128                    [::]:5432                [::]:*

Выходные данные должны показать, что сервер PostgreSQL прослушивает все интерфейсы (0.0.0.0).

Последний шаг — настроить сервер для приема удаленных входов в систему путем редактирования файла pg_hba.conf .

Ниже приведены несколько примеров, показывающих различные варианты использования:

/etc/postgresql/11/main/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# The user jane will be able to access all databases from all locations using an md5 password
host    all             jane            0.0.0.0/0                md5

# The user jane will be able to access only the janedb from all locations using an md5 password
host    janedb          jane            0.0.0.0/0                md5

# The user jane will be able to access all databases from a trusted location (192.168.1.134) without a password
host    all             jane            192.168.1.134            trust

Выводы

Мы показали вам, как установить и настроить PostgreSQL в Debian 10. Для получения дополнительной информации по этой теме обратитесь к документации PostgreSQL .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий