Установка phpMyAdmin с Nginx на Ubuntu 22.04

Что такое phpMyAdmin
phpMyAdmin — это бесплатное веб-приложение с открытым исходным кодом для управления базами данных MySQL/MariaDB через браузер. Оно написано на PHP и предоставляет удобный интерфейс для выполнения SQL-запросов, импорта/экспорта данных, управления пользователями и привилегиями.
Важно: по умолчанию phpMyAdmin открывает веб‑интерфейс, поэтому необходимо правильно настроить доступ и SSL.
Требования
- Сервер с Ubuntu 22.04.
- Домен или поддомен, направленный на сервер (пример: phpmyadmin.example.com).
- Настроенный пароль root для MariaDB (или возможность его задать).
Шаг 1 — Установка Nginx, MariaDB и PHP
Установите Nginx, MariaDB, PHP и необходимые расширения PHP:
apt-get install nginx mariadb-server php php-cli php-mysql php-mbstring php-zip php-gd php-json php-curl php-fpm -yПосле установки пакетов переходите к установке phpMyAdmin.
Шаг 2 — Установка phpMyAdmin
Пакет phpMyAdmin доступен в репозитории Ubuntu 22.04. Установите его командой:
apt-get install phpmyadmin -yВо время установки установщик спросит о выборе веб-сервера. Поскольку мы используем Nginx, нажмите TAB и затем Enter, чтобы пропустить автоматическую интеграцию (она предназначена для Apache). Далее установщик предложит настроить базу данных для phpMyAdmin — выберите Yes и задайте пароль приложения, когда будет запрошено.



Шаг 3 — Базовая настройка MariaDB
По умолчанию MariaDB не защищена. Запустите встроенный скрипт безопасности:
mysql_secure_installationОтветьте на вопросы и задайте пароль root, удалите анонимных пользователей, запретите удалённый вход root и удалите тестовую базу.
Пример ответов (интерактивно):
Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] YРекомендуется создать отдельного пользователя, который будет использоваться в phpMyAdmin вместо root:
mysql -u root -pВ MariaDB выполните корректные SQL-команды:
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'your_password_here';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;Замените your_password_here на надёжный пароль. Использование отдельного неполномочного пользователя повышает безопасность.
Шаг 4 — Конфигурация Nginx для phpMyAdmin
Создайте конфигурацию виртуального хоста:
nano /etc/nginx/conf.d/phpmyadmin.confДобавьте блок сервера (замените server_name на ваш домен):
server {
listen 80;
listen [::]:80;
server_name phpmyadmin.example.com;
root /usr/share/phpmyadmin/;
index index.php index.html index.htm index.nginx-debian.html;
access_log /var/log/nginx/phpmyadmin_access.log;
error_log /var/log/nginx/phpmyadmin_error.log;
location / {
try_files $uri $uri/ /index.php;
}
location ~ ^/(doc|sql|setup)/ {
deny all;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
location ~ /\.ht {
deny all;
}
}Проверьте конфигурацию Nginx и перезапустите сервис:
nginx -t
systemctl restart nginx
systemctl status nginxПример ожидаемого вывода проверки конфигурации:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulПосле перезапуска измените владельца и права для каталога phpMyAdmin:
chown -R www-data:www-data /usr/share/phpmyadmin/
chmod -R 755 /usr/share/phpmyadmin/Примечание: проверьте путь сокета php-fpm (php8.1-fpm.sock) — он зависит от установленной версии PHP.
Шаг 5 — Защита SSL через Let’s Encrypt (Certbot)
Добавьте репозиторий Certbot (если требуется) и установите клиент:
add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471
apt-get update -y
apt-get install certbot python3-certbot-nginx -yЗапустите Certbot для автоматической генерации и установки сертификата:
certbot --nginx -d phpmyadmin.example.comПроцесс попросит ввести e-mail, согласиться с условиями и выбрать, нужно ли перенаправлять весь HTTP‑трафик на HTTPS. Для производства рекомендуется выбрать перенаправление (Redirect).
Пример фрагмента вывода Certbot:
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for phpmyadmin.example.com
Waiting for verification...
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/phpmyadminПосле успешной установки вы получите путь к сертификатам в /etc/letsencrypt/live/phpmyadmin.example.com/
Важно: Certbot настроит автоматическое обновление сертификатов. Для тестирования HTTPS используйте https://www.ssllabs.com/ssltest/.
Шаг 6 — Доступ к phpMyAdmin
Откройте в браузере:
https://phpmyadmin.example.comВойдите под созданным пользователем (например, admin) или под root, если это временно необходимо.


Безопасность: рекомендации и усиление защиты
Important: веб-интерфейс управления базами требует дополнительной защиты. Рекомендуемые меры:
- Ограничьте доступ по IP-адресам в Nginx для административных интерфейсов.
- Пример в конфигурации Nginx:
location / {
allow 203.0.113.42; # ваш IP
deny all;
try_files $uri $uri/ /index.php;
}- Добавьте HTTP Basic Auth перед phpMyAdmin:
- Установите htpasswd и включите auth_basic, если нужен второй уровень защиты.
- Задайте blowfish_secret в /etc/phpmyadmin/config.inc.php:
$cfg['blowfish_secret'] = 'сложная_строка_32_и_больше_символов';- Отключите вход root по сети в MariaDB (оставьте только локальный доступ).
- Скрывайте URL phpMyAdmin, переместив его в нестандартный поддомен или префикс.
- Регулярно применяйте обновления ОС, PHP и phpMyAdmin.
- Логирование: храните логи доступа и отслеживайте аномалии.
Противодействие автоматизированным атакам
- Используйте fail2ban для блокировки попыток перебора паролей по логам Nginx.
- Ограничьте скорость запросов через Nginx (rate limiting).
Альтернативные подходы
- Apache вместо Nginx: автоматическая интеграция phpMyAdmin в Apache во время установки — проще для новичков.
- Docker: запустить phpMyAdmin и MariaDB в контейнерах (официальные образы) для изоляции и удобства развертывания.
- Использование администратора баз данных на основе GUI на рабочей станции (HeidiSQL, DBeaver) — подходит, если вы хотите не держать веб-интерфейс публично.
Совместимость и миграция
- Версия PHP должна поддерживаться phpMyAdmin; для Ubuntu 22.04 типично PHP 8.1.
- Проверьте соответствие сокета PHP-FPM (путь /run/php/php8.1-fpm.sock).
- При переносе между серверами экспортируйте базы данных и конфигурации (config.inc.php, файлы виртуального хоста).
Критерии приёмки
- Страница https://phpmyadmin.example.com доступна по HTTPS без предупреждений.
- Пользователь с правами admin может войти и просматривать/редактировать базы по требованиям.
- Сертификат Let’s Encrypt установлен и конфигурация Nginx корректна (nginx -t проходит).
- Доступ к настройкам и директориям ограничен по IP/HTTP-Auth, логи собираются.
Тесты и проверки (минимум)
- Попытка входа: верный и неверный пароль — убедиться, что блокировки работают.
- Проверка прав пользователя admin — нельзя выполнять операции сверх предоставленных прав.
- Регрессия SSL: автоматическое продление сертификата certbot renew –dry-run.
- Проверка безопасности: сканирование фронтенда на наличие чувствительных директорий (/setup, /sql) — они должны быть запрещены.
Роли и чек-лист перед продакшеном
Администратор сервера:
- Установил обновления и настроил бэкапы.
- Ограничил доступ по IP и добавил HTTP‑Auth.
DBA:
- Создал пользователя с ограниченными правами для приложения.
- Проверил резервные копии и права на таблицы.
DevOps:
- Настроил мониторинг и оповещения о состоянии nginx/php-fpm.
- Настроил fail2ban и rate limiting.
Факты и справка (коробка с ключевыми цифрами)
- Папка установки phpMyAdmin по умолчанию: /usr/share/phpmyadmin/
- Файл конфигурации: /etc/phpmyadmin/config.inc.php
- Файлы сертификатов Let’s Encrypt: /etc/letsencrypt/live/<домен>/
- Рекомендуемая длина blowfish_secret: >= 32 символов
Когда этот подход НЕ подходит
- Если вы не хотите держать веб-интерфейс, лучше использовать клиентские GUI/CLI для работы с БД.
- Для большого количества одновременно работающих пользователей и высокой нагрузки стоит рассмотреть профилирование и разделение инфраструктуры.
Итог и дальнейшие шаги
Поздравляем — phpMyAdmin установлен и защищён базовым SSL. Дальше:
- Проверьте уведомления об обновлениях и настройте автоматические обновления безопасности.
- Настройте регулярный бэкап баз данных.
- Подумайте о двухфакторной аутентификации через внешние прокси или VPN для дополнительной безопасности.
Краткое резюме:
- Установили Nginx, MariaDB и PHP.
- Установили phpMyAdmin, настроили виртуальный хост и права.
- Подключили HTTPS через Certbot и усилили безопасность.
Спасибо за внимание. Если нужно, могу подготовить версию для Docker-compose или конфигурацию с ограничением доступа по IP и HTTP Basic Auth.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента