В статье описана установка PostgreSQL 13 на Ubuntu 20.04 и последующая настройка связи r_keeper с удалённым сервером PostgreSQL.
Установка PostgreSQL на Debian 11 описана в статье по установке r_keeper 7 на Linux.

Обновление системы

Обновите систему командой

sudo apt update
sudo apt -y upgrade
BASH

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

Добавление репозитория PostgreSQL 13 в Ubuntu

Добавьте репозиторий PostgreSQL

sudo apt -y install vim bash-completion wget
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee  /etc/apt/sources.list.d/pgdg.list
BASH

Установка PostgreSQL 13

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

sudo apt update
sudo apt install postgresql-13 postgresql-client-13
BASH

Если после установки сервер баз данных не запустился, то выполните запуск командой:

sudo pg_ctlcluster 13 main start
BASH

Проверка соединения с PostgreSQL

Во время установки автоматически создается пользователь postgres. Этот пользователь имеет полный доступ суперадминистратора ко всему экземпляру PostgreSQL. Системный пользователь, вошедший в систему, должен иметь права sudo перед переключением на эту учетную запись.

sudo su - postgres
BASH

Чтобы изменить пароль пользователя на надёжный, введите:

psql -c "alter user postgres with password 'YourSuperPass';"
BASH

Если PostgreSQL уже запущен, то укажите запрос:

alter user postgres with password 'YourSuperPass';
BASH

Запустите командную строку PostgreSQL:

psql
BASH

psql (13.3 (Ubuntu 13.3-1.pgdg20.04+1))00
Введите help, чтобы получить справку.

Детализация подключения:

\conninfo
BASH

Вы подключены к базе данных "postgres" как пользователь "postgres" через сокет в "/var/run/postgresql", порт "5432".

Создание базы данных

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

CREATE DATABASE RK765;
BASH

CREATE DATABASE

Создайте пользователя базы данных с паролем

CREATE USER ucs WITH ENCRYPTED PASSWORD '123';
SQL

CREATE ROLE

Назначьте права созданному пользователю в рамках указанной базы данных

GRANT ALL PRIVILEGES ON DATABASE rk765 to ucs;   
BASH

GRANT

Предоставьте созданному пользователю права создавать роли. Эти права необходимы для работы с r_keeper:

alter role ucs with createrole;
BASH

ALTER ROLE

Вывести список баз данных

\l
BASH


postgres=# \l
                                 Список баз данных
   
Имя    | Владелец | Кодировка | LC_COLLATE  |  LC_CTYPE   |     Права доступа      
-----------+----------+-----------+-------------+-------------+-----------------------
postgres  | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |  
rk765     | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 |  
template0 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
          |          |           |             |             | postgres=CTc/postgres
template1 | postgres | UTF8      | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
          |          |           |             |             | postgres=CTc/postgres
(4 строки)

Выход из psql 

\q
BASH

Выход из суперпользователя postgres

exit
BASH

logout

Настройка удалённого подключения

Установка PostgreSQL 13 на Ubuntu по умолчанию принимает соединения только от localhost. В производственных средах будет центральный сервер базы данных и подключенные к нему удаленные клиенты.

Разрешение удаленного подключения

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

sudo nano /etc/postgresql/13/main/postgresql.conf
BASH

Откроется конфигурационный файл. В нем раскоментируйте или добавьте строчку на выбор:

  • прослушивать все интерфейсы:

    listen_addresses = '*'          # Listen on all interfaces
    BASH
  • прослушивать только на заданных адресах:

    listen_addresses = '192.168.1.101' # Listen on specified private IP address
    BASH

В нашем случае выбран адрес 192.168.1.101, у вас будет другой

Для текстового редактора NANO:

  • Чтобы сохранить изменения в файле используйте сочетание клавиш ctrl + o
  • Для выхода из режима редактирования файла используйте ctrl + x

Разрешение приема удаленных подключений

Настройте PostgreSQL на прием удаленных подключений от разрешенных хостов.
Перейдите в конфигурационный файл:

sudo nano /etc/postgresql/13/main/pg_hba.conf
BASH

Раскоментируйте или добавьте новую строчку на выбор:

  • прием удаленных подключений от всех

    host all all 0.0.0.0/0 md5   # Accept from anywhere
    BASH
  • прием удаленных подключений от разрешенных подсетей

    host all all 10.10.10.0/24 md5    # Accept from trusted subnet
    BASH

После изменения перезапустите службу postgresql.

sudo systemctl restart postgresql
BASH

Проверьте адрес прослушивания.

netstat  -tunelp | grep 5432
BASH

tcp 0  0 0.0.0.0:5432   0.0.0.0:*     LISTEN   123    4698674  -  tcp6  0   0 :::5432    :::*    LISTEN   123     4698675    -

Полученная информация об адресе прослушивания говорит, что все настройки выполнены верно.