Настройка 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
— имя вашего пользователя PostgreSQLdb_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