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

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

В этом руководстве мы покажем вам, как установить PostgreSQL на Debian 9, и изучим основы базового администрирования баз данных.

Подготовка

Прежде чем продолжить это руководство, убедитесь, что пользователь, под которым вы вошли в систему, имеет права sudo .

Установка PostgreSQL

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

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

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

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

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

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

    Результат будет выглядеть так:

     version ----------------------------------------------------------------------------------------------------------- PostgreSQL 9.6.10 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit (1 row)
Psql — это интерактивная терминальная программа, которая позволяет вам взаимодействовать с сервером PostgreSQL.

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

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

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

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

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

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

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

sudo su - postgrespsql

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

q

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

sudo -u postgres psql

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

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

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

В следующем примере мы создадим новую роль с именем john в базе данных с именем johndb и предоставим привилегии для этой базы данных.

  1. Создайте новую роль PostgreSQL

    Следующая команда создаст новую роль с именем john:

     sudo su - postgres -c "createuser john"
  2. Создайте новую базу данных PostgreSQL

    Создайте новую базу данных с именем johndb с помощью команды createdb :

     sudo su - postgres -c "createdb johndb"
  3. Предоставлять привилегии

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

     sudo -u postgres psql

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

     grant all privileges on database johndb to john ;

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

По умолчанию PostgreSQL, сервер слушает только локальный интерфейс 127.0.0.1 . Чтобы включить удаленный доступ к серверу PostgreSQL, откройте файл конфигурации postgresql.conf и добавьте listen_addresses = '*' в раздел CONNECTIONS AND AUTHENTICATION .

sudo vim /etc/postgresql/9.6/main/postgresql.conf
/etc/postgresql/9.6/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/9.6/main/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# The user jane will be able to access all databases from all locations using a 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 a 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 9. Для получения дополнительной информации по этой теме обратитесь к документации PostgreSQL .

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

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