Гид по технологиям

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

• 5 min read • Руководство • Обновлено 25 Nov 2025
Установка phpMyAdmin с Nginx на Ubuntu 22.04
Установка phpMyAdmin с Nginx на Ubuntu 22.04

Скриншот: логотип или иллюстрация для руководства по установке phpMyAdmin

Что такое 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 и задайте пароль приложения, когда будет запрошено.

Установка phpMyAdmin: экран выбора веб-сервера

Настройка базы данных для phpMyAdmin

Запрос пароля приложения для phpMyAdmin

Шаг 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, если это временно необходимо.

Страница входа phpMyAdmin

Интерфейс phpMyAdmin после входа

Безопасность: рекомендации и усиление защиты

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.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро