Установка и настройка Postgres¶
Требования:
- Postgres не ниже версии 14.
- Крайне не рекомендуется использование утилиты PgBouncer.
- В силу специфики работы Postgres (PG активно забирает, но самостоятельно не возвращает ресурсы операционной системе) установка СУБД и TEGU Enterprise на одной вычислительной ноде не рекомендуется и не поддерживается.
- Обязательно необходим пакет postgresql-contrib (как правило в таких системах как REDOS, AltLinux его приходится устанавливать дополнительно).
Note
Что делать если забыли установить? Если не установлен пакет postgresql-contrib, то в логе почтового сервера будет ошибка:
[DEBUG] Dirty database version 5. Fix and force version.
Для исправления необходимо установить postgresql-contrib, удалить базу tegu_settings и создать ее заново.
1. Установите СУБД Postgres¶
Соблюдая описанные выше требования, на отдельной ноде установите выбранный вами СУБД Postgres удобным для вас способом, способом,
рекомендованным вендором вашей ОС, вендором вашей Postgres или воспользуйтесь нашими инструкциями для установка PostgreSQL на
2. Создайте пользователя tegu¶
Переходим в postrges su - postgres -s /bin/bash
ил sudo -u postgres -s /bin/bash
Создаем пользователя createuser -d -S -E -P tegu
3. Создайте базы данных¶
Необходимо создать 3 базы данных:
tegu_queue - база данных очередей
tegu_mailboxes - база данных почтового хранилища
tegu_settings - база данных настроек почтового сервера
Выполните:
createdb -E UTF-8 -O tegu tegu_queue
createdb -E UTF-8 -O tegu tegu_mailboxes
createdb -E UTF-8 -O tegu tegu_settings
4. Настройка доступа из подсетей¶
nano /var/lib/pgsql/data/pg_hba.conf
Или так (где номер это версия postgres) nano /etc/postgresql/15/main/pg_hba.conf
Если версия Pro то путь может быть такой nano /var/lib/pgpro/std-14/data/pg_hba.conf
Пример файла pg_hba.conf
# 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 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
host all all 10.199.199.0/24 md5
host all all 10.44.44.0/24 md5
host all all 10.0.0.0/8 md5
Раскомментируйте в конфигурационном файле postgresql.conf port 5432 и ip адрес с которого можно подключиться к базе данных.
Пример файла postgresql.conf
listen_addresses = '*' # 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)
для ванильной версии postgres nano /var/lib/pgsql/data/postgresql.conf
или так nano /etc/postgresql/15/main/postgresql.conf
для версии pro nano /var/lib/pgpro/std-14/data/postgresql.conf
После правок в конфигурационных файлах, перезапустите СУБД.
Некоторые полезные команды Postgres¶
- Перезапуск Postgres
pg_ctlcluster 15 main restart - Посмотреть какие базы данных есть на сервере
psql -U postgres -c "\l+" - Удалить базы данных
psql
DROP DATABASE tegu_mailboxes;
- Чтение списка всех пользователей
SELECT usename
FROM pg_user;
- Посмотреть пользователей Postgres c дополнительнй информацией
SELECT *
FROM pg_user;
- Проверить привилегии и роли для конкретного пользователя
SELECT *
FROM information_schema.role_table_grants
WHERE grantee = 'имя_пользователя';
- Просмотр списка всех ролей, к которым принадлежит пользователь
SELECT r.rolname
FROM pg_roles r
JOIN pg_auth_members m ON r.oid = m.roleid
JOIN pg_roles r2 ON r2.oid = m.member
WHERE r2.rolname = 'имя_пользователя';
- Просмотр списка баз данных, к которым имеет доступ пользователь
SELECT datname
FROM pg_database
WHERE has_database_privilege('имя_пользователя', datname, 'CONNECT');
- Проверка привилегий для конкретного пользователя
SELECT grantee, table_name, privilege_type
FROM information_schema.table_privileges
WHERE grantee = 'имя_пользователя';
- Удалить пользователей Postgres
DROP USER имя_пользователя;
- Как проверить подключение к серверу баз данных
psql -U tegu -d tegu_settings -h 172.16.10.2 -p 5432 -W
где:
-U (имя пользователя
-d (имя базы данных)
-h (хост сервера базы данных)
-p (порт)
-W (пароль)