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

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

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

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

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

Подготовка

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

Установите PostgreSQL из репозиториев CentOS

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

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

  1. Установка PostgreSQL

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

     sudo yum install postgresql-server postgresql-contrib
  2. Инициализация базы данных

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

     sudo postgresql-setup initdb
     Initializing database ... OK
  3. Запуск PostgreSQL

    Чтобы запустить службу PostgreSQL и разрешить ей запускаться при загрузке, просто введите:

     sudo systemctl start postgresql sudo systemctl enable postgresql
  4. Проверка установки PostgreSQL

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

     sudo -u postgres psql -c "SELECT version();"
     PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit (1 row)
Psql — это интерактивная утилита командной строки, которая позволяет нам взаимодействовать с сервером PostgreSQL.

Установите PostgreSQL из репозиториев PostgreSQL

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

Выполните следующие действия, чтобы установить последнюю версию PostgreSQL на свой сервер CentOS:

  1. Включение репозитория PostgreSQL

    Чтобы включить репозиторий PostgreSQL, просто установите rpm файл репозитория:

     sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
  2. Установка PostgreSQL

    После включения репозитория установите сервер PostgreSQL и пакеты Contrib PostgreSQL с помощью:

     sudo yum install postgresql10-server postgresql10-contrib
  3. Инициализация базы данных

    Чтобы инициализировать тип базы данных PostgreSQL:

     sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
     Initializing database ... OK
  4. Запуск PostgreSQL

    Чтобы запустить службу PostgreSQL и разрешить ей запускаться при загрузке, введите:

     sudo systemctl start postgresql-10 sudo systemctl enable postgresql-10
  5. Проверка установки PostgreSQL

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

     sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"
     PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit (1 row)

Роли и методы аутентификации 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

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

sudo -u postgres psql

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

Если вы установили PostgreSQL версии 10 из официальных репозиториев PostgreSQL, вам нужно будет использовать полный путь к двоичному файлу psql есть /usr/pgsql-10/bin/psql .

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

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

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

  1. Подключиться к оболочке PostgreSQL

     sudo -u postgres psql
  2. Создайте новую роль PostgreSQL

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

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

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

     create database johndb ;
  4. Предоставлять привилегии

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

     grant all privileges on database johndb to john ;

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

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

sudo vim /var/lib/pgsql/data/postgresql.conf
Если вы используете PostgreSQL версии 10, путь к файлу будет /var/lib/pgsql/10/data/postgresql.conf .
/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
Если вы используете PostgreSQL версии 10, перезапустите службу PostgreSQL с помощью systemctl restart postgresql-10 .

Проверьте изменения с помощью утилиты 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 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 версии 10, полный путь к файлу — /var/lib/pgsql/10/data/pg_hba.conf .

Выводы

Вы узнали, как установить и настроить PostgreSQL на своем сервере CentOS 7.

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

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

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