Как установить PostgreSQL в Ubuntu 20.04

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

В этом руководстве мы объясним, как установить сервер базы данных PostgreSQL в Ubuntu 20.04, и изучим основы администрирования базы данных PostgreSQL.

Подготовка

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

Установите PostgreSQL в Ubuntu

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

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

sudo apt updatesudo apt install postgresql postgresql-contrib

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

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

sudo -u postgres psql -c "SELECT version();"
PostgreSQL 12.2 (Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-8ubuntu1) 9.3.0, 64-bit

Вот и все. 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 и эквивалентен пользователю 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 su - postgres -c "createuser john"
  2. Создайте новую базу данных PostgreSQL:

     sudo su - postgres -c "createdb johndb"

Чтобы предоставить пользователю права доступа к базе данных, подключитесь к оболочке 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 nano /etc/postgresql/12/main/postgresql.conf
/etc/postgresql/12/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

Вывод показывает, что сервер PostgreSQL прослушивает все интерфейсы ( 0.0.0.0 ):

LISTEN  0        244              0.0.0.0:5432           0.0.0.0:*              
LISTEN  0        244                 [::]:5432              [::]:* 

Следующим шагом является настройка сервера для приема удаленных подключений путем редактирования файла pg_hba.conf .

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

/etc/postgresql/12/main/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

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

# The user jane can access only the janedb from all locations using 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

Последний шаг — открыть порт 5432 в вашем брандмауэре.

Предполагая, что вы используете UFW для управления брандмауэром и хотите разрешить доступ из подсети 192.168.1.0/24 , вы должны выполнить следующую команду:

sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432

Убедитесь, что ваш брандмауэр настроен на прием подключений только из доверенных диапазонов IP-адресов.

Выводы

Мы показали вам, как установить и настроить PostgreSQL на сервере Ubuntu 20.04. Дополнительную информацию по этой теме см. В документации PostgreSQL 12 .

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

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