ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

8 Примера установки PostgreSQL, создание базы данных и таблиц, создание и выбор записей

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

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

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

 

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

 

На момент написания этой статьи существует две версии сервера PostgreSQL, доступные для установки из стандартных репозиториев CentOS: версии 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 server версии 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. По умолчанию для локальных соединений PostgreSQL настроен на использование метода одноранговой аутентификации.

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

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

sudo su - postgres
psql

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

\q

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

sudo -u postgres psql

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

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

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

  1. Во-первых, подключитесь к оболочке PostgreSQL:
    sudo -u postgres psql
    
  2. Создайте новую роль PostgreSQL, используя следующую команду thr:
    create role andreyex;
  3. Создание новой базы данных:
    create database andreyexdb;
  4. Предоставьте пользователю права доступа к базе данных, выполнив следующий запрос:
    grant all privileges on database andreyexdb to andreyex;

 

По умолчанию сервер 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 (https://www.postgresql.org/docs/10.0/static/index.html).

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

Exit mobile version