Установка PostgreSQL и phpPgAdmin на OpenSUSE Leap
Введение
PostgreSQL (обычно называют Postgres) — это продвинутая объектно-реляционная система управления базами данных. Postgres с открытым исходным кодом развивается десятилетиями и подходит для корпоративных приложений с серьёзными нагрузками. OpenSUSE Leap совместим с PostgreSQL и позволяет быстро развернуть сервер БД на многих операционных системах.
Кратко: в этой инструкции показано, как установить PostgreSQL 9.4 на OpenSUSE Leap, создать пользователей и базу, настроить доступ и подключить phpPgAdmin для управления через веб-интерфейс.
Основные понятия в одну строчку
- Роль — концепция PostgreSQL, похожая на системного пользователя Linux, используется для аутентификации и прав доступа.
- psql — командная оболочка PostgreSQL для выполнения запросов и управления сервером.
Требования
- OpenSUSE Leap 42.1 (либо совместимая версия)
- root-права или sudo
Шаг 1 — Установка PostgreSQL
OpenSUSE содержит пакеты нескольких версий PostgreSQL. В этом примере устанавливается PostgreSQL 9.4 через zypper.
Установите пакеты:
zypper in postgresql94 postgresql94-contrib postgresql94-serverЗапустите сервис:
systemctl start postgresqlВажно: если пакетная база у вас другая (новее/старше), подставьте соответствующие версии пакетов.
Шаг 2 — Настройка пользователя postgres
PostgreSQL создаёт роль «postgres» по умолчанию для администрирования.
Войдите в систему под этой ролью:
sudo su
su - postgresЗапустите psql (интерактивная оболочка):
psqlИзмените пароль роли «postgres»:
\password postgres
New Password:Введите новый пароль.
Шаг 3 — Создание новой роли и базы данных
Создадим роль с суперпользовательскими правами и базу данных для неё.
Под ролью postgres выполните:
su - postgres
createuser -s nano
createdb nano_dbПримечание: опция -s даёт роли суперпользовательские привилегии. Здесь роль называется «nano», а база — «nano_db».
Затем установим пароль и дадим все привилегии на базу:
psql
alter user nano with encrypted password 'aqwe123@';
grant all privileges on database nano_db to nano;Я использую пароль «aqwe123@» в примере — замените его на надёжный.

Важно: для доступа через phpPgAdmin роль должна иметь пароль. Не допускайте логинов без пароля.
Шаг 4 — Конфигурация PostgreSQL для сетевого доступа
Если нужно подключаться удалённо (например, из PgAdmin3 или других инструментов), откройте сетевой доступ.
Перейдите в каталог данных PostgreSQL и отредактируйте postgresql.conf:
cd /var/lib/pgsql/
cd data/
vim postgresql.confНайдите и измените параметры (раскомментируйте и установите значения):
listen_addresses = '*'
port = 5432Сохраните файл.
Затем настройте метод аутентификации в файле pg_hba.conf:
vim pg_hba.confИзмените соответствующие строки на md5, чтобы требовался пароль:
#TYPE Database User Address Method
local all all md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5Если хотите разрешить доступ с конкретного IP (например, вашего рабочего ПК), добавьте запись вида:
host all all <ваш_IP>/32 md5Перезапустите сервис:
systemctl restart postgresqlВажно: открывая доступ извне, используйте брандмауэр и ограничение по IP.
Шаг 5 — Установка и настройка phpPgAdmin
phpPgAdmin — веб-интерфейс на PHP для управления PostgreSQL. Для него используем Apache.
Установите пакет:
zypper in phpPgAdminПерейдите в каталог конфигурации и отредактируйте config.inc.php:
cd /etc/phpPgAdmin/
vim config.inc.phpУстановите хост на «localhost» (строка 18 в примере):
$conf['servers'][0]['host'] = 'localhost';Параметр дополнительной безопасности (строка около 93) по умолчанию равен true. Не рекомендуется отключать его:
$conf['extra_login_security'] = true;Активируйте модули в Apache, нужные для phpPgAdmin:
a2enmod php5
a2enmod versionПерезапустите сервисы:
systemctl restart postgresql
systemctl restart apache2Шаг 6 — Тестирование
Откройте браузер и перейдите по URL (пример):
http://192.168.1.101/phpPgAdmin/

Войдите под ролью «nano» и введённым паролем «aqwe123@».

Если попытаться войти под «postgres», вход будет запрещён из-за включённой дополнительной безопасности.

Безопасность и хорошие практики
- Всегда используйте надёжные пароли и храните их в защищённом хранилище паролей.
- Не открывайте доступ к серверу PostgreSQL публично без необходимости. Ограничьте IP-адреса в pg_hba.conf и настройках брандмауэра.
- Отключайте учётные записи по умолчанию для внешнего доступа, если это возможно.
- Регулярно обновляйте пакеты PostgreSQL и ОС.
Альтернативные подходы
- Если вы не хотите phpPgAdmin, используйте PgAdmin4, DBeaver или psql для управления.
- Для облачного развёртывания рассмотрите управляемые сервисы (AWS RDS, Heroku Postgres), они снимают часть задач по поддержке.
- Для production-сред использует репликацию и бэкапы (pg_basebackup, pg_dump). Этот туториал покрывает только базовую установку.
Ментальные модели и полезные эвристики
- Роль = учётная запись + привилегии; думайте о ролях как о сочетании системного пользователя и набора прав в БД.
- Разделяйте права: создавайте отдельные роли для приложений, администраторов и сервисов.
- Минимизируйте права: давайте только необходимые привилегии (принцип наименьших привилегий).
Критерии приёмки
- PostgreSQL сервис активен: systemctl status postgresql показывает Active: active.
- psql позволяет подключиться под ролью postgres и user nano.
- phpPgAdmin доступен по указанному URL и позволяет войти с учётной записью nano.
- Подключения с разрешённых IP работают, с запретных — отклоняются.
Чек-лист для запуска в проде
- Изменён пароль роли postgres на уникальный
- Созданы роли для приложений с минимальными правами
- Настроен pg_hba.conf с md5 и ограничением по IP
- Включён брандмауэр и правила для портов
- Настроены регулярные бэкапы и проверка восстановления
- Логи мониторятся и хранятся централизованно
Траблшутинг: распространённые проблемы и решения
- Не запускается PostgreSQL после правок конфигурации: проверьте синтаксис файлов postgresql.conf и pg_hba.conf, просмотрите журнал journalctl -u postgresql.
- phpPgAdmin не принимает логин «nano»: убедитесь, что пароль задан и аутентификация в pg_hba.conf установлена на md5.
- Подключение извне завершается ошибкой: проверьте listen_addresses, настройки брандмауэра и запись в pg_hba.conf для IP клиента.
Факти-бокс: ключевые цифры и команды
- Порт по умолчанию: 5432
- Типичный путь данных на OpenSUSE: /var/lib/pgsql/data
- Включение сервиса: systemctl start postgresql
- Перезапуск Apache: systemctl restart apache2
Политика хранения данных и конфиденциальность
Если ваши данные содержат персональные данные (PII), учитывайте требования локального законодательства и GDPR. Шифруйте резервные копии и ограничьте доступ к файлам конфигурации и дампам.
Короткое руководство на случай отката (rollback)
- Если новая конфигурация ломает старт сервиса, верните предыдущую версию postgresql.conf/pg_hba.conf из резервной копии и выполните systemctl restart postgresql.
- Если базы повреждены, используйте последний успешный дамп для восстановления: pg_restore или psql для SQL-дампов.
Справочные ссылки
- https://www.postgresql.org/docs/9.1/static/auth-methods.html#AUTH-PASSWORD
- https://www.howtoforge.com/tutorial/postgresql-on-ubuntu-15-04/
Короткое резюме
- Установите пакеты PostgreSQL и запустите сервис.
- Создайте роли и базы, установите пароли.
- Настройте сетевой доступ и метод аутентификации (md5).
- Установите phpPgAdmin, настройте и протестируйте подключение через веб.
Ключевые результаты: рабочий сервер PostgreSQL, управляемый через phpPgAdmin, с базовой безопасной настройкой и возможностью удалённого подключения по необходимости.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента