Установка PostgreSQL на Ubuntu 20.04

от автора

в

Установка PostgreSQL на Ubuntu 20.04

Установка PostgreSQL

Для установки PostgreSQL 14 на Ubuntu 20.04 необходимо:
Обновить пакеты.

sudo apt -y update
sudo apt -y upgrade

Добавить репозиторий и ключ, скрипт взят с официально сайта Postgres, но по какой-то причине не всегда отрабатывает.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql

Если версия Postgres Вам непринципиальна, воспользуйтесь уже существующим пакетом. В apt Ubuntu 20.04 уже есть пакет PostgreSQL 12. Установить можно одной из следующих команд:

sudo apt -y install postgresql

или

sudo apt -y install postgresql-12

Обновить список пакетов.

sudo apt -y update

Установить последнюю версию PostgreSQL, на момент написания статьи это PostgreSQL-14
Если вам нужна конкретная версия, используйте ‘postgresql-12‘ или другую аналогичную вместо ‘postgresql

apt -y install postgresql

После установки проверяем запущен ли PostgreSQL

systemctl status postgresql

Добавляем PostgreSQL в автозагрузку

systemctl enable postgresql

Настройка PostgreSQL

Переходим под аккаунт пользователя Postgres.

su postgres

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

createuser --interactive username

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

psql -Upostgres

Меняем пароль командой postgres=# \password postgres, после чего будет предложено 2 раза ввести новый пароль:
Enter new password for user «postgres»:
Enter it again:

\password username

Удалить пользователя можно командой dropuser username, но для этого нужно выйти из psql назад в пользователя с помощью команды \q

dropuser username

Вывести список пользователей, выполняется в psql

select * from pg_shadow;

Вывести список баз, выполняется в psql

select * from pg_database;

Для подключения к базе данных с других устройств отличных от сервера, потребуется отредактировать файлы конфигурации. Вместо 14 укажите свою версию PostgreSQL.

nano /etc/postgresql/14/main/pg_hba.conf

В конце данного файла есть интересующий нас блок по настройке, с каких хостов, какие пользователи, с каких адресов и каким способом можно подключаться.

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256

В нашем случае это будет IPv4, любой хост, любой пользователь, с подсетью 192.168.1.0 и маской 255.255.255.0 она же 24, способ подключения обычный пароль.
Для этого требуется добавить следующую строку:

host    all             all             192.168.1.0/24            password

В итоге мой блок # IPv4 local connections: выглядит так:

# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             192.168.1.0/24          password

Далее требуется отредактировать ещё один файл postgresql.conf

nano /etc/postgresql/14/main/postgresql.conf

Тут нас интересует блок CONNECTIONS AND AUTHENTICATION в котором нам необходимо указать какие IP адреса и порт будет слушать PostgreSQL.

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories
                                        # (change requires restart)

В нашем случае это будут любые доступные адреса, для этого в данный блок мы добавим строку listen_addresses = ‘*’ — где звёздочка это любые адреса, порт мы оставляем по умолчанию 5432. Теперь наш блок выглядит так:

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
listen_addresses = '*'
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)

Перезапустить PostgreSQL для применения настроек.

systemctl restart postgresql

Теперь всё, что осталось сделать это открыть необходимый порт для PostgreSQL на сервере для входящих соединений.

ufw allow 5432

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *