Перейти к основному содержимому
Версия: 5.1

Настройка PostgreSQL

Установка и начальная настройка PostgreSQL

Примечание

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

Если PostgreSQL еще не установлен, выполните следующие действия:

Установка PostgreSQL

sudo apt update
sudo apt install postgresql postgresql-contrib

Проверка статуса сервиса:

systemctl status 'postgresql*'

Создание пользователя и базы данных

sudo su - postgres -c "createuser user_name"
sudo su - postgres -c "createdb db_name"

Настройка доступа

Откройте файл конфигурации postgresql.conf и измените параметр:

listen_addresses = '*'

В файле pg_hba.conf добавьте строку:

host all all 0.0.0.0/0 password
Обратите внимание!

Такое правило открывает доступ к базе данных с любого IP-адреса. Если необходимо ограничить доступ определенными адресами, создайте отдельные записи с нужными IP или подсетями вместо 0.0.0.0/0.

Например, чтобы разрешить подключение только с одного хоста 172.16.0.8, используйте:

host all all 172.16.0.8/32 password

После изменений перезапустите PostgreSQL:

sudo systemctl restart postgresql

Назначение пароля и прав пользователя

Примечание

Во всех приведенных командах замените user_name, db_name и password на значения, соответствующие вашей системе:

  • user_name — имя вашего пользователя PostgreSQL
  • db_name — название вашей базы данных
  • password — пароль пользователя

Запустите psql от имени пользователя postgres:

sudo -u postgres psql

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

\c db_name
ALTER USER user_name WITH PASSWORD 'password';
GRANT CREATE ON SCHEMA public TO user_name;
ALTER DATABASE db_name OWNER TO user_name;
Обратите внимание!

Если возникает ошибка relation does not exist (отношение не существует), возможно, необходимо подготовить таблицы вручную:

sudo -u postgres psql

\c db_name
CALL public.preparetables('assets_name');
ALTER TABLE assets_name OWNER TO user_name;

Проверка подключения:

psql -U user_name -h 127.0.0.1 -p 5432 -d db_name

Настройка SSL/TLS

Включение SSL на стороне сервера PostgreSQL

В файле postgresql.conf включите поддержку SSL и укажите путь к сертификатам:

ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'

В файле pg_hba.conf добавьте строку, чтобы требовать SSL при подключении:

hostssl all all 0.0.0.0/0 md5

Сертификаты server.crt и server.key должны быть размещены в каталоге данных PostgreSQL ($PGDATA). Установите права:

chmod 600 server.key
chown postgres:postgres server.*
Обратите внимание!

Файлы сертификатов должны быть в формате PEM. PostgreSQL поддерживает только этот формат.

Примечание

Генерация самоподписанных сертификатов

Если у вас нет готовых сертификатов, вы можете сгенерировать самоподписанный SSL-сертификат с помощью OpenSSL:

openssl req -new -x509 -days 365 -nodes \
-out server.crt \
-keyout server.key \
-subj "/CN=your_domain_or_ip"

Более подробную информацию можно найти в официальной документации PostgreSQL.

Перезапустите PostgreSQL:

sudo systemctl restart postgresql