Установка phpMyAdmin на Alma Linux 8

Что такое phpMyAdmin
phpMyAdmin — это бесплатный и открытый веб-интерфейс для управления СУБД MySQL и MariaDB. Коротко: он позволяет просматривать, создавать и изменять базы данных и выполнять SQL‑запросы через браузер.
Краткое определение терминов:
- PHP-FPM — менеджер процессов PHP, выполняет PHP скрипты для Nginx.
- LEMP — стек Linux, Nginx, MariaDB/MySQL, PHP.
Предварительные требования
- Сервер с Alma Linux 8.
- Домен, указывающий на IP сервера (например, phpmyadmin.example.com).
- Настроенный root-пароль на сервере.
- Доступ по sudo или root.
Важно: на production-серверах обязательно использовать HTTPS и ограничить доступ к интерфейсу phpMyAdmin по IP или через VPN.
Установка LEMP стека
- Установим Nginx и MariaDB:
dnf install nginx mariadb -y- Подключим репозиторий Remi для актуальных сборок PHP:
dnf -y install http://rpms.remirepo.net/enterprise/remi-release-8.rpm- Отключим стандартный модуль PHP и включим Remi‑версию (в примере — PHP 7.4):
dnf module -y reset php
dnf module install php:remi-7.4 -y- Установим PHP и необходимые расширения:
dnf install php php-cli php-common php-fpm php-curl php-gd php-mbstring php-process php-snmp php-xml php-zip php-memcached php-mysqlnd php-json php-mbstring php-pdo php-pdo-dblib php-xml unzip wget -y- Измените пользователя в конфигурации PHP-FPM, чтобы процессы запускались от nginx:
nano /etc/php-fpm.d/www.confВ файле:
user = nginx
group = nginx- Запустите и включите сервисы:
systemctl start nginx php-fpm mariadb
systemctl enable nginx php-fpm mariadbСоздание пользователя для phpMyAdmin
Рекомендуется создать отдельного пользователя БД для операций через phpMyAdmin.
- Защитите установку MariaDB:
mysql_secure_installationВы будете поэтапно запрошены об установке пароля root, удалении анонимных пользователей и т.д.
- Войдите в MariaDB и создайте базу и пользователя:
mysql
MariaDB [(none)]> CREATE DATABASE phpmyadmin CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> CREATE USER 'phpmyadmin'@'%' IDENTIFIED BY 'password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;Важно: замените ‘password’ на надёжный пароль и ограничьте хост (‘%’) до конкретных IP, если возможно.
Установка phpMyAdmin
- Скачайте последнюю стабильную версию с официального сайта (приведён пример):
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.3/phpMyAdmin-5.1.3-all-languages.zip- Распакуйте и переместите в корень веб‑сервера:
unzip phpMyAdmin-5.1.3-all-languages.zip
mv phpMyAdmin-5.1.3-all-languages /usr/share/nginx/phpmyadmin- Скопируйте пример конфигурации и задайте секрет Blowfish:
cp /usr/share/nginx/phpmyadmin/config{.sample,}.inc.php
nano /usr/share/nginx/phpmyadmin/config.inc.phpВ файле определите:
$cfg['blowfish_secret'] = 'securekey';Замените ‘securekey’ на случайную строку как минимум 32 символа.
- Установите владельца каталога:
chown -R nginx:nginx /usr/share/nginx/phpmyadmin
chown -R nginx:nginx /var/lib/php/session/Конфигурация Nginx для phpMyAdmin
Создайте виртуальный хост:
nano /etc/nginx/conf.d/phpmyadmin.confДобавьте конфигурацию:
server {
listen 80;
server_name phpmyadmin.example.com;
root /usr/share/nginx/phpmyadmin;
access_log /var/log/nginx/phpmyadmin_access.log;
error_log /var/log/nginx/phpmyadmin_error.log;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php-fpm/www.sock;
}
}Проверьте конфигурацию и перезапустите сервисы:
nginx -t
systemctl restart nginx php-fpm
systemctl status nginxЕсли вы видите сообщения об успешном запуске — конфигурация корректна.
Настройка файрвола
Разрешите HTTP (и обязательно HTTPS для production) через firewall:
firewall-cmd --permanent --zone public --add-service http
firewall-cmd --reloadДля HTTPS используйте –add-service=https или откройте порт 443.
Доступ к веб UI
Откройте в браузере URL http://phpmyadmin.example.com. На странице входа используйте созданного пользователя (phpmyadmin) и пароль.

После входа вы попадёте в интерфейс управления базами данных:

Создание базы данных:

Удаление базы данных:

Безопасность и hardening
Рекомендованные шаги для безопасной эксплуатации:
- Включите HTTPS (Certbot/Let’s Encrypt) и перенаправляйте весь трафик на 443.
- Ограничьте доступ к phpMyAdmin по IP с помощью директивы allow/deny или через Nginx (на фронте) и/или через firewall.
- Смените расположение интерфейса (например, /pma вместо /phpmyadmin) и настройте редиректы — это не панацея, но уменьшает автоматизированные сканирования.
- Отключите авторизацию cookie в конфиге, если используете внешнюю аутентификацию.
- Разрешайте вход только через пользователей с минимально необходимыми правами.
- Регулярно обновляйте phpMyAdmin, PHP и ОС.
- Включите аудит и логирование действий в базе при помощи плагинов/встроенных средств СУБД.
Важно: web‑доступный интерфейс управления БД — это чувствительная часть инфраструктуры. Планируйте бэкап и тестируйте восстановление.
Альтернативные подходы
- LAMP (Apache вместо Nginx) — если вы предпочитаете Apache и mod_php.
- Установка из репозиториев (EPEL/Remi) — проще в поддержке обновлений, но версии могут отставать.
- Контейнеризация: запуск phpMyAdmin в Docker-контейнере (официальный образ phpmyadmin/phpmyadmin) для изоляции и упрощённого деплоя.
- Использование других GUI: Adminer (легковесный), MySQL Workbench (настольный клиент).
Критерии приёмки
- Nginx успешно обслуживает phpMyAdmin по заданному домену.
- Возможен вход под созданным пользователем и выполнение базовых операций (создание/удаление БД, экспорт/импорт SQL).
- Конфигурация PHP-FPM запущена от пользователя nginx.
- Доступ по HTTPS настроен (для production).
- Логи и права на файлы заданы корректно (nginx:nginx).
Тесты и сценарии приёмки
- Тест 1: Войти в phpMyAdmin и создать БД test_pma — ожидаемый результат: БД создана.
- Тест 2: Создать таблицу и вставить запись; выполнить SELECT — данные возвращаются.
- Тест 3: Попытка доступа по HTTP — перенаправление на HTTPS (если настроено).
- Тест 4: Попытка доступа с запрещённого IP — доступ заблокирован.
Технический playbook: резервный план и откат
- Перед обновлением phpMyAdmin создайте резервную копию каталога и config.inc.php.
- Экспортируйте базы данных:
mysqldump -u root -p --all-databases > all_databases.sql- Если обновление ломает сайт — откат:
- Остановите Nginx/Php-FPM.
- Восстановите каталог /usr/share/nginx/phpmyadmin из бэкапа.
- Восстановите config.inc.php.
- Перезапустите сервисы.
Роль‑ориентированные контрольные списки
Администратор:
- Настроить HTTPS и firewall.
- Ограничить доступ по IP.
- Обновлять пакеты и следить за логами.
Разработчик:
- Проверить подключение приложения к БД через созданного пользователя.
- Проверить экспорт/импорт SQL.
Специалист по безопасности:
- Провести сканирование уязвимостей по доступному интерфейсу.
- Внедрить аудит и ротацию ключей.
Устранение проблем (troubleshooting)
- Ошибка 502 Bad Gateway: проверьте, запущен ли php-fpm и правильный путь сокета в Nginx (unix:/run/php-fpm/www.sock).
- Проблемы с правами на сессии: проверьте владельца /var/lib/php/session/ и права на /usr/share/nginx/phpmyadmin.
- Неверный blowfish_secret: сессии не будут работать — убедитесь в корректности строки в config.inc.php.
Когда этот подход не подходит
- Если нужна минимальная нагрузка и малая поверхность атаки — рассмотрите Adminer.
- Если вы не хотите размещать админку в общедоступной сети — используйте SSH‑троннелирование или VPN.
Рекомендации по обновлениям
- Обновляйте phpMyAdmin сразу после выхода критических исправлений.
- Тестируйте обновление в стейджинг‑окружении перед production.
Заключение
Поздравляем — phpMyAdmin установлен и доступен через веб‑интерфейс. На production обязательно включите HTTPS, ограничьте доступ и регулярно обновляйте компоненты. Если нужны примеры конфигурации для HTTPS (Certbot) или Docker‑вариант установки, могу предоставить отдельный пошаговый сценарий.
Краткое резюме:
- Установили Nginx, MariaDB и PHP-FPM.
- Сконфигурировали phpMyAdmin и Nginx.
- Описали меры безопасности, тесты и откат.
Если хотите — предоставлю готовый systemd unit snippet, конфигурацию для HTTPS с Certbot или docker‑compose файл.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента