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

Установка и защита phpMyAdmin на Ubuntu 20.04

• 5 min read • Базы данных • Обновлено 18 Nov 2025
Установка и защита phpMyAdmin на Ubuntu 20.04
Установка и защита phpMyAdmin на Ubuntu 20.04

Скриншот: главный экран phpMyAdmin

phpMyAdmin — это свободное веб-приложение для управления базами данных MySQL и MariaDB через браузер. С его помощью можно управлять пользователями и привилегиями, импортировать/экспортировать данные, выполнять SQL-запросы и многое другое. В этом руководстве показано, как установить phpMyAdmin с Nginx на Ubuntu 20.04 и защитить доступ с помощью бесплатного сертификата Let’s Encrypt.

Кому полезно

  • Системным администраторам, которым нужно быстро развернуть веб-интерфейс управления базой данных.
  • Разработчикам, которым нужен удобный интерфейс для администрирования локальных или удалённых баз.

Важно: данное руководство предполагает, что у вас есть домен, указывающий на сервер, и что вы понимаете риски открытия интерфейса управления БД в интернет.

Предварительные требования

  • Сервер с Ubuntu 20.04.
  • Действительный домен, направленный на IP сервера.
  • Настроенный пароль root для сервера (или доступ по sudo).

Шаг 1 — Установка 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

После установки сервисы будут доступны, но MariaDB не будет ещё защищена.

Шаг 2 — Установка phpMyAdmin

В Ubuntu 20.04 пакет phpMyAdmin доступен из официального репозитория. Установите пакет:

apt-get install phpmyadmin -y

Во время установки установщик предложит выбрать веб-сервер. Поскольку мы используем Nginx, нажмите TAB и затем ENTER, чтобы пропустить выбор. Затем согласитесь на использование dbconfig-common (Yes) и задайте пароль приложения phpMyAdmin при запросе.

Окно: выбор web-сервера при установке phpMyAdmin

Окно: подтверждение использования dbconfig-common

Окно: ввод пароля для приложения phpMyAdmin

Совет: используйте сложный пароль для внутреннего пользователя phpMyAdmin (если вы используете dbconfig-common).

Шаг 3 — Базовая настройка и защита MariaDB

Сразу после установки выполните стандартную утилиту безопасной настройки MariaDB:

mysql_secure_installation

Следуйте подсказкам и ответьте утвердительно на изменение пароля root, удаление анонимных пользователей, запрет удалённого входа для root, удаление тестовой базы и перезагрузку таблиц привилегий.

Затем создайте отдельного пользователя для взаимодействия с phpMyAdmin (рекомендуется не использовать системного root для повседневных задач):

mysql -u root -p

В MySQL/MariaDB shell выполните:

create user 'admin'@'localhost' identified by 'password';
grant all privileges on *.* to 'admin'@'localhost' with grant option;
flush privileges;
exit;

Замените ‘admin’ и ‘password’ на желаемые логин и надёжный пароль.

Важно: для продуктивных сред гранулярные права (только нужные базы/операции) безопаснее, чем grant all.

Шаг 4 — Конфигурация Nginx для phpMyAdmin

Создайте новый конфигурационный файл виртуального хоста:

nano /etc/nginx/sites-available/phpmyadmin

Вставьте (при необходимости замените server_name на ваш домен):

server {
  listen 80;
  listen [::]:80;
  server_name phpmyadmin.linuxbuz.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/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

  location ~ /\.ht {
    deny all;
  }
}

Сохраните файл и создайте символическую ссылку в sites-enabled:

ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/

Установите рекомендованный размер хэш-таблицы имён серверов:

nano /etc/nginx/nginx.conf

Добавьте внутри блока http { строку:

    server_names_hash_bucket_size 64;

Проверьте конфигурацию Nginx и перезапустите сервис:

nginx -t
systemctl restart nginx
systemctl status nginx

Если вы меняете server_name, не забудьте заменить phpmyadmin.linuxbuz.com на ваш реальный домен.

Шаг 5 — Защита с помощью 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.linuxbuz.com

В процессе укажите email и согласитесь с условиями. После этого вам предложат выбрать перенаправление HTTP -> HTTPS. Для публичного сайта рекомендуется выбрать перенаправление (Redirect).

После успешного получения сертификата Certbot обновит конфигурацию Nginx и настроит автоматическое обновление. Подтвердите работу автообновления командой:

certbot renew --dry-run

Дополнительные меры безопасности (рекомендуется)

  1. Ограничение доступа по IP: если доступ нужен только из офисной сети, в конфиге Nginx добавьте allow/deny. Пример:
location / {
  allow 203.0.113.0/24;
  deny all;
  try_files $uri $uri/ /index.php;
}
  1. HTTP Basic Auth в Nginx: добавляет второй слой аутентификации.
apt-get install apache2-utils
htpasswd -c /etc/nginx/.phpmyadmin_htpasswd youruser

Затем в server блоке:

location / {
  auth_basic "Restricted";
  auth_basic_user_file /etc/nginx/.phpmyadmin_htpasswd;
  try_files $uri $uri/ /index.php;
}
  1. fail2ban: настройте фильтр для защиты попыток входа в phpMyAdmin.
  2. Отключите прямой доступ к setup/ и doc/ (в конфиге уже добавлено deny).
  3. Регулярные бэкапы дампов БД и конфигураций.

Примечание: Basic Auth и ограничение по IP совместимы с HTTPS и повышают безопасность.

Автоматическое продление сертификата и мониторинг

Let’s Encrypt сертификаты действуют 90 дней. Certbot обычно добавляет cron/systemd задачу. Проверьте dry-run:

certbot renew --dry-run

Рекомендуется настраивать мониторинг доступности (Uptime) и оповещения о проблемах с HTTPS.

Частые проблемы и отладка

  • Nginx не стартует после правок: проверьте nginx -t и логи /var/log/nginx/error.log.
  • Certbot не может верифицировать домен: убедитесь, что DNS A/AAAA запись указывает на сервер и порт 80 доступен.
  • PHP-файлы скачиваются как текст: проверьте, что fastcgi_pass и snippets/fastcgi-php.conf включены и PHP-FPM запущен.

Чеклист перед открытием phpMyAdmin в интернет

  • MariaDB защищена и root не доступен удалённо.
  • Отдельный пользователь для повседневных задач создан.
  • HTTPS включён (Let’s Encrypt).
  • Доступ ограничен по IP или защищён Basic Auth.
  • Fail2ban настроен для защиты от перебора паролей.
  • Регулярные бэкапы БД настроены.

Проверки для ролей

Для администратора:

  • Убедиться, что права пользователей минимизированы.
  • Настроить мониторинг и уведомления о просроченных сертификатах.
  • Проводить периодические аудиты доступа.

Для разработчика:

  • Использовать отдельные учётки для разных сред (dev/stage/prod).
  • Не хранить пароли в коде.
  • Проверять запросы перед выполнением (особенно импорты SQL).

Короткий словарь

  • phpMyAdmin — веб-интерфейс для MySQL/MariaDB.
  • Certbot — клиент для получения сертификатов Let’s Encrypt.
  • PHP-FPM — FastCGI-процесс для интерпретации PHP.

Критерии приёмки

  • Веб-интерфейс доступен по HTTPS на вашем домене.
  • Вход в phpMyAdmin возможен под созданной учётной записью.
  • Ограничения доступа и мониторинг настроены по чеклисту.

Заключение

Вы успешно установили phpMyAdmin и защитили его с помощью Let’s Encrypt на Ubuntu 20.04. Дополнительные слои безопасности (ограничение IP, Basic Auth, fail2ban) и регулярные бэкапы помогут снизить риски при эксплуатации.

Важно: при работе с продакшн-базами всегда следуйте принципу наименьших привилегий и храните резервные копии в безопасном месте.

Поделиться: 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 быстро