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

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

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

Установка PostgreSQL

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

sudo apt update
sudo apt install postgresql postgresql-contrib

Проверка установки PostgreSQL

После завершения установки служба PostgreSQL запустится автоматически.

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

sudo -u postgres psql -c "SELECT version();"

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

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

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

  • Trust — с помощью этого метода роль может подключаться без пароля, если соблюдены критерии, определенные в pg_hba.confфайле.
  • Password. Роль может подключиться, указав пароль. Пароли могут быть сохранены как 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 - postgres
psql

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

\q

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

sudo -u postgres psql

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


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

Вы можете создавать новые роли из командной строки с помощью createuserкоманды. Только суперпользователи и роли с CREATEROLEпривилегиями могут создавать новые роли.

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

Создайте новую роль PostgreSQL

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

sudo su - postgres -c "createuser john"

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

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

sudo su - postgres -c "createdb johndb"

Предоставление привилегий

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

/etc/postgresql/10/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
LISTEN   0         128                 0.0.0.0:5432             0.0.0.0:*
LISTEN   0         128                    [::]:5432                [::]:*

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

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

Заключение

Вы узнали, как установить и настроить PostgreSQL на сервере Ubuntu 18.04.