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

12 set 2022 4 min di lettura
Как установить PostgreSQL на CentOS 8 Linux
Indice dei contenuti

Введение

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

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

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

Предпосылки

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

Если вы хотите установить PostgreSQL на удаленный сервер, продолжайте читать, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh root@IP_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

Если вы не используете пользователя root, вы можете войти в систему с другим именем пользователя, используя ту же команду, а затем изменить root на свое имя пользователя:

ssh nome_utente@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Установите 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

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

sudo dnf install @postgresql:10

Чтобы установить сервер 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 H
 at 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. Это эквивалентно привилегированному пользователю MySQL.

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

sudo su - postgres
psql

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

\q

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

exit

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

sudo -u postgres psql

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

Создать базу данных и роль PostgreSQL

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

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

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

sudo -u postgres psql

Создайте новую роль PostgreSQL с помощью следующей команды:

create role alice;

Создайте новую базу данных:

create database alicedb;

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

grant all privileges on database alicedb to alice;

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

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

Установите текстовый редактор nano или используйте редактор vi по умолчанию:

sudo dnf install nano

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

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

Прокрутите вниз до раздела CONNECTIONS AND AUTHENTICATION и добавьте/отредактируйте строку listen_addresses, например так:

#------------------------------------------------------------------------------
 # 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.

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

sudo nano /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 alice 0.0.0.0/0 md5

 # The user jane can access only the janedb database from all locations using an md5 password
 host alicedb alice 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 alice 192.168.21.21 trust

Вывод

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

Дополнительные сведения по этой теме см. в документации PostgreSQL.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.