PostgreSQL — что это и зачем нужен
PostgreSQL — это мощная объектно-реляционная система управления базами данных с открытым исходным кодом. Она используется для хранения, обработки и управления данными в корпоративных системах, веб-приложениях, аналитических сервисах и высоконагруженных проектах.
PostgreSQL ценят за:
- надежность;
- соответствие SQL-стандартам;
- расширяемость;
- стабильную работу под высокой нагрузкой;
- встроенные механизмы репликации и резервного копирования.
Сегодня PostgreSQL активно используется как альтернатива коммерческим СУБД благодаря высокой производительности и отсутствию лицензионных ограничений.
Установка PostgreSQL
Установка PostgreSQL в Ubuntu / Debian
Обновляем список пакетов:
sudo apt update
Устанавливаем PostgreSQL:
sudo apt install postgresql postgresql-contrib -y
После установки служба обычно запускается автоматически.
Проверяем статус:
sudo systemctl status postgresql
Установка PostgreSQL в CentOS / Rocky Linux / AlmaLinux
Устанавливаем репозиторий PostgreSQL:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Отключаем встроенный модуль PostgreSQL:
sudo dnf -qy module disable postgresql
Устанавливаем сервер PostgreSQL:
sudo dnf install -y postgresql16-server
Инициализируем базу:
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
Запускаем службу:
sudo systemctl enable --now postgresql-16
Подключение к PostgreSQL
По умолчанию PostgreSQL создает системного пользователя postgres.
Подключаемся к консоли PostgreSQL:
sudo -u postgres psql
После входа откроется интерактивная SQL-консоль.
Пример:
SELECT version();
Создание пользователя и базы данных
Создаем нового пользователя:
CREATE USER adminotes WITH PASSWORD 'StrongPassword';
Создаем базу данных:
CREATE DATABASE adminotes_db;
Назначаем владельца базы:
ALTER DATABASE adminotes_db OWNER TO adminotes;
Выдаем привилегии:
GRANT ALL PRIVILEGES ON DATABASE adminotes_db TO adminotes;
Основные команды PostgreSQL
Список баз данных:
\l
Подключение к базе:
\c adminotes_db
Список таблиц:
\dt
Выход из консоли:
\q
Настройка удаленного подключения PostgreSQL
По умолчанию PostgreSQL принимает подключения только локально.
Основные конфигурационные файлы:
/etc/postgresql/16/main/postgresql.conf
и:
/var/lib/pgsql/16/data/pg_hba.conf
Разрешаем прослушивание внешних интерфейсов
Редактируем:
sudo nano /etc/postgresql/16/main/postgresql.conf
Находим параметр:
#listen_addresses = 'localhost'
Меняем на:
listen_addresses = '*'
Настройка правил доступа
Открываем файл:
sudo nano /var/lib/pgsql/16/data/pg_hba.conf
Добавляем строку:
host all all 0.0.0.0/0 md5
Перезапуск PostgreSQL
sudo systemctl restart postgresql
или:
sudo systemctl restart postgresql-16
Открытие порта в firewall
Для Firewalld:
sudo firewall-cmd --permanent --add-service=postgresqlsudo firewall-cmd --reload
Для UFW:
sudo ufw allow 5432/tcp
Проверка подключения
Подключение с удаленного сервера:
psql -h SERVER_IP -U adminotes -d adminotes_db
Резервное копирование PostgreSQL
Создание дампа:
pg_dump -U postgres adminotes_db > backup.sql
Восстановление:
psql -U postgres adminotes_db < backup.sql
Для больших проектов лучше использовать:
pg_dumpall
или физические бэкапы через:
pg_basebackup
Полезные рекомендации по PostgreSQL
Используйте сложные пароли
Не оставляйте стандартные учетные записи без защиты. PostgreSQL регулярно становится целью брутфорс-атак после открытия порта 5432 в интернет.
Не открывайте PostgreSQL в интернет без необходимости
Лучше ограничивать доступ через VPN, WireGuard или firewall по IP-адресам.
Следите за логами
Логи PostgreSQL помогают быстро выявлять:
- ошибки SQL;
- проблемы производительности;
- попытки несанкционированного доступа.
Заключение
PostgreSQL — одна из самых надежных и гибких СУБД для Linux-инфраструктуры. Даже базовой настройки достаточно для запуска корпоративных сервисов, веб-приложений и внутренних систем автоматизации.
При грамотной настройке PostgreSQL стабильно работает под высокой нагрузкой, поддерживает масштабирование и предоставляет мощные инструменты резервного копирования и восстановления.
FAQ
Как узнать версию PostgreSQL?
SELECT version();
Где находятся конфигурационные файлы PostgreSQL?
Чаще всего:
/etc/postgresql/
или:
/var/lib/pgsql/
Как изменить пароль пользователя PostgreSQL?
ALTER USER adminotes WITH PASSWORD 'NewStrongPassword';
Как посмотреть активные подключения?
SELECT * FROM pg_stat_activity;


