Как установить PostgreSQL на CentOS 8

PostgreSQL или Postgres — это универсальная объектно-реляционная система управления базами данных с открытым исходным кодом, обладающая множеством расширенных функций, которые позволяют создавать отказоустойчивые среды или сложные приложения.

В этом руководстве мы обсудим, как установить сервер базы данных PostgreSQL на CentOS 8. Перед тем, как выбрать версию для установки, убедитесь, что ваши приложения ее поддерживают.

Мы также изучим основы администрирования баз данных PostgreSQL.

Подготовка

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

Установка PostgreSQL на CentOS 8

На момент написания этой статьи для установки из стандартных репозиториев CentOS доступны две версии сервера PostgreSQL: версия 9.6 и 10.0.

Чтобы вывести список доступных потоков модуля PostgreSQL, введите:

dnf module list postgresql

Выходные данные показывают, что модуль postgresql доступен с двумя потоками. Каждый поток имеет два профиля: серверный и клиентский. По умолчанию используется поток 10 с сервером профилей:

CentOS-8 - AppStream
Name          Stream    Profiles              Summary                                                 
postgresql    10 [d]    client, server [d]    PostgreSQL server and client module                     
postgresql    9.6       client, server [d]    PostgreSQL server and client module 
  1. Чтобы установить поток по умолчанию, введите сервер PostgreSQL версии 10.0:

     sudo dnf install @postgresql:10
  2. Чтобы установить сервер PostgreSQL версии 9.6, введите:

     sudo dnf install @postgresql:9.6

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

sudo dnf install postgresql-contrib

После завершения установки инициализируйте базу данных PostgreSQL с помощью следующей команды:

sudo postgresql-setup initdb
Initializing database ... OK

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

sudo systemctl enable --now postgresql

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

sudo -u postgres psql -c "SELECT version();"
PostgreSQL 10.6 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3), 64-bit

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

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

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

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

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

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

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

sudo su - postgrespsql

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

q

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

sudo -u postgres psql

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

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

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

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

  1. Сначала подключитесь к оболочке PostgreSQL:

     sudo -u postgres psql
  2. Создайте новую роль PostgreSQL, используя следующую команду:

     create role john ;
  3. Создайте новую базу данных:

     create database johndb ;
  4. Предоставьте пользователю права доступа к базе данных, выполнив следующий запрос:

     grant all privileges on database johndb to john ;

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

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

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

sudo nano /var/lib/pgsql/data/postgresql.conf

Прокрутите вниз до раздела CONNECTIONS AND AUTHENTICATION и добавьте / отредактируйте следующую строку:

/var/lib/pgsql/data/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

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

Сохраните файл и перезапустите службу PostgreSQL с помощью:

sudo systemctl restart postgresql

Проверьте изменения с помощью утилиты 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 .

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

/var/lib/pgsql/data/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# The user jane can access all databases from all locations using an md5 password
host    all             jane            0.0.0.0/0                md5

# The user jane can access only the janedb database from all locations using an md5 password
host    janedb          jane            0.0.0.0/0                md5

# The user jane can access all databases from a trusted location (192.168.1.134) without a password
host    all             jane            192.168.1.134            trust

Выводы

CentOS 8 предоставляет две версии PostgreSQL: 9.6 и 10.0.

Для получения дополнительной информации по этой теме посетите документацию PostgreSQL.

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

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