configurations/databases/db.md

136 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Базы данных
## PostgreSQL
### Установка
Установка `PostgreSQL` в `Ubuntu`:
```sh
sudo apt update
sudo apt install postgresql postgresql-contrib
```
Установка в `Solus`:
```sh
sudo eopkg it postgresql postgresql-contrib
```
Пакет `postgresql-contrib` содержит дополнительные утилиты и функциональные возможности.
В процессе установки создаётся учётная запись `postgres`, которая связана с используемой по умолчанию ролью `postgres`.
### Использование
После установки, чтобы подключиться к СУБД PostgreSQL необходимо открыть `shell` из под пользователя `postgres`:
```sh
sudo -i -u postgres
```
где `-i` запуск оболочки входа в систему от имени целевого пользователя `-u postgres`.
После входа в оболочку под пользователем `postgres` запустить утилиту `psql`:
```sh
psql
```
Или использовать более быстрый способ:
```sh
sudo -u postgres psql
```
### Создание новой роли
После входа в оболочку под пользователем `postgres`, можно создать новую роль с помощью следующей команды:
```sh
createuser --interactive
```
При создании необходимо будет ввести имя новой роли и указать, будет ли являться новая роль суперпользователем:
```sh
Enter name of role to add: user
Shall the new role be a superuser? (y/n) y
```
Для любой роли, используемой для входа, существует база данных с тем же именем, к которой роль может получить доступ. Это означает, что если созданный пользователь будет иметь имя `user`, эта роль попытается подключиться к базе данных, которая также называется `"user"` по умолчанию. Необходимо создать соответствующую базу данных:
```sh
createdb user
```
При этом должен существовать пользователь Linux с тем же именем, что и имя роли и базы данных в Postgres.
### Смена пароля
Для установки/смены пароля выполнить в `psql` команду:
```sh
\password user
```
где `user` - имя пользователя, у которого необходимо сменить пароль.
### Удалённый доступ
Для открытия удалённого доступа необходимо отредактировать файл `/etc/postgresql/14/main/postgresql.conf`, где `14` - версия PostgreSQL:
```sh
sudo nano /etc/postgresql/14/main/postgresql.conf
```
Раскомментировать параметр `listen_addresses` и установить в качестве значения звёздочку (`*`):
```sh
listen_addresses = '*'
```
Сохранить и перезагрузить сервер PostgreSQL, в `Ubuntu`:
```sh
sudo systemctl restart postgresql.service
```
в других дистрибутивах:
```sh
sudo service postgresql restart
```
### Восстановление бэкапа
Восстановление бэкапа из файла `*.sql`:
```sh
psql -f backup.sql
```
### Возможные ошибки
При подключении к удалённой БД может возникнуть ошибка:
```sh
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:
```sh
sudo nano /etc/postgresql/14/main/pg_hba.conf
```
и добавить запись:
```sh
host all user 192.168.56.1/32 scram-sha-256
```
которая разрешает доступ логина `user` к любой базе данных с IP-адреса `192.168.56.1`.