configurations/databases/postgresql.md

4.6 KiB
Raw Blame History

PostgreSQL

Установка

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

sudo apt update
sudo apt install postgresql postgresql-contrib

Установка в Solus:

sudo eopkg it postgresql postgresql-contrib

Пакет postgresql-contrib содержит дополнительные утилиты и функциональные возможности.

В процессе установки создаётся учётная запись postgres, которая связана с используемой по умолчанию ролью postgres.

Использование

После установки, чтобы подключиться к СУБД PostgreSQL необходимо открыть shell из под пользователя postgres:

sudo -i -u postgres

где -i запуск оболочки входа в систему от имени целевого пользователя -u postgres.

После входа в оболочку под пользователем postgres запустить утилиту psql:

psql

Или использовать более быстрый способ:

sudo -u postgres psql

Создание новой роли

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

createuser --interactive

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

Enter name of role to add: user
Shall the new role be a superuser? (y/n) y

Для любой роли, используемой для входа, существует база данных с тем же именем, к которой роль может получить доступ. Это означает, что если созданный пользователь будет иметь имя user, эта роль попытается подключиться к базе данных, которая также называется "user" по умолчанию. Необходимо создать соответствующую базу данных:

createdb user

При этом должен существовать пользователь Linux с тем же именем, что и имя роли и базы данных в Postgres.

Смена пароля

Для установки/смены пароля выполнить в psql команду:

\password user

где user - имя пользователя, у которого необходимо сменить пароль.

Удалённый доступ

Для открытия удалённого доступа необходимо отредактировать файл /etc/postgresql/14/main/postgresql.conf, где 14 - версия PostgreSQL:

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

Раскомментировать параметр listen_addresses и установить в качестве значения звёздочку (*):

listen_addresses = '*'

Сохранить и перезагрузить сервер PostgreSQL, в Ubuntu:

sudo systemctl restart postgresql.service

в других дистрибутивах:

sudo service postgresql restart

Восстановление бэкапа

Восстановление бэкапа из файла *.sql:

psql -f backup.sql

Возможные ошибки

При подключении к удалённой БД может возникнуть ошибка:

FATAL: no pg_hba.conf entry for host "192.168.56.1", user "user", database "user", SSL encryption

где 192.168.56.1 - адрес компьютера, с которого происходит подключение, user - имя пользователя, от которого происходит подключение, а также имя базы данных.

Необходимо отредактировать файл /etc/postgresql/14/main/pg_hba.conf, где 14 - версия PostgreSQL:

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

и добавить запись:

host    all             user            192.168.56.1/32         scram-sha-256

которая разрешает доступ логина user к любой базе данных с IP-адреса 192.168.56.1.