Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Рубрики
Linux Администрация Безопасность

Как установить и защитить phpMyAdmin на Ubuntu (Полное руководство)

phpMyAdmin — один из наиболее широко используемых инструментов с открытым исходным кодом для управления базами данных MySQL и MariaDB через веб-интерфейс. Независимо от того, являетесь ли вы разработчиком, системным администратором или владельцем веб-сайта, он значительно упрощает сложные операции с базами данных — от выполнения SQL-запросов до импорта/экспорта данных — без необходимости использования командной строки.

Однако, поскольку phpMyAdmin по умолчанию доступен по общедоступному URL, оставить его незащищённым — серьёзный риск. Это подробное руководство проведёт вас через установку phpMyAdmin на Ubuntu 20.04/22.04, его настройку с Apache и защиту от несанкционированного доступа с использованием нескольких уровней безопасности.

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

Перед началом убедитесь, что выполнены следующие требования:

  • Сервер с Ubuntu 20.04 или 22.04 (физический или виртуальный)
  • MySQL или MariaDB установлены и активно работают
  • Веб-сервер Apache2 установлен
  • Учётная запись пользователя с привилегиями sudo
  • Доменное имя или статический IP-адрес, указывающий на ваш сервер
  • (Рекомендуется) Действительный SSL-сертификат для зашифрованного доступа HTTPS

> Совет: Если у вас ещё нет серверной среды, рассмотрите VPS-хостинг AlexHost — полностью управляемые или неуправляемые планы Linux VPS с мгновенной подготовкой, доступом root и хранилищем SSD, идеальные для безопасного запуска phpMyAdmin.

Шаг 1 — Обновление системы и индекса пакетов

Всегда начинайте с обновления списков пакетов и применения любых ожидающих обновлений системы. Это гарантирует установку последней доступной версии phpMyAdmin и избежание конфликтов зависимостей.

sudo apt update && sudo apt upgrade -y

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

Установите phpMyAdmin из официального репозитория Ubuntu APT:

sudo apt install phpmyadmin -y

Во время установки появится интерактивный мастер конфигурации. Внимательно выполните следующие шаги:

2.1 — Выбор веб-сервера

Вам будет предложено выбрать веб-сервер для автоматической настройки:

Please choose the web server that should be automatically configured to run phpMyAdmin.

  [*] apache2
  [ ] lighttpd

Используйте пробел для выбора apache2, затем нажмите Tab для выделения <Ok> и нажмите Enter.

2.2 — Настройка базы данных с помощью dbconfig-common

Далее вас спросят, хотите ли вы настроить базу данных для phpMyAdmin с помощью dbconfig-common:

Configure database for phpmyadmin with dbconfig-common?

Выберите Да. Затем вам будет предложено ввести пароль приложения MySQL для внутреннего пользователя базы данных phpMyAdmin. Либо введите надёжный пароль, либо оставьте поле пустым, чтобы он был сгенерирован автоматически.

2.3 — Проверка установки

После завершения установки подтвердите, что phpMyAdmin установлен:

dpkg -l phpmyadmin

Вы должны увидеть строку, показывающую установленную версию пакета.

Шаг 3 — Настройка Apache для phpMyAdmin

В некоторых конфигурациях Ubuntu файл конфигурации Apache для phpMyAdmin не включается автоматически. Проверьте и включите его вручную.

3.1 — Включение конфигурации phpMyAdmin

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin

3.2 — Проверка файла конфигурации

Откройте файл конфигурации для проверки его содержимого:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Файл должен содержать следующие директивы (или подобные):

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAny>
            Require all granted
        </RequireAny>
    </IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAny>
            Require all granted
        </RequireAny>
    </IfModule>
</Directory>

Сохраните и закройте файл с помощью CTRL+X, затем Y, затем Enter.

3.3 — Перезагрузка Apache

Примените изменения конфигурации:

sudo systemctl restart apache2

Проверьте, что Apache работает без ошибок:

sudo systemctl status apache2

Шаг 4 — Защита phpMyAdmin с помощью HTTP Basic Authentication

По умолчанию любой, кто знает IP-адрес вашего сервера, может получить доступ к странице входа phpMyAdmin. Добавление уровня HTTP Basic Authentication создаёт второй пароль перед тем, как пользователи увидят форму входа phpMyAdmin.

4.1 — Установка apache2-utils

sudo apt install apache2-utils -y

4.2 — Создание файла пароля и пользователя

Создайте файл .htpasswd и добавьте вашего первого административного пользователя. Замените your_admin_user на выбранное вами имя пользователя:

sudo mkdir -p /etc/phpmyadmin
sudo htpasswd -c /etc/phpmyadmin/.htpasswd your_admin_user

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

sudo htpasswd /etc/phpmyadmin/.htpasswd another_user

4.3 — Обновление конфигурации Apache для phpMyAdmin

Отредактируйте файл конфигурации phpMyAdmin для принудительной аутентификации:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Найдите блок <Directory /usr/share/phpmyadmin> и добавьте внутри него следующие строки:

<Directory /usr/share/phpmyadmin>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    # HTTP Basic Authentication
    AuthType Basic
    AuthName "Restricted Access — Authorized Personnel Only"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

    <IfModule mod_authz_core.c>
        <RequireAny>
            Require valid-user
        </RequireAny>
    </IfModule>
</Directory>

Сохраните и закройте файл.

4.4 — Перезагрузка Apache

sudo systemctl restart apache2

Теперь переход на /phpmyadmin сначала потребует учётные данные HTTP-аутентификации перед отображением страницы входа phpMyAdmin.

Шаг 5 — Ограничение доступа по IP-адресу (Опционально, но рекомендуется)

Для ещё более надёжной защиты ограничьте доступ к phpMyAdmin только определёнными доверенными IP-адресами. Это особенно полезно, если вы всегда получаете доступ к серверу с фиксированного IP-адреса (например, из корпоративной сети или VPN).

Отредактируйте конфигурацию Apache для phpMyAdmin:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Измените блок <Directory> для включения ограничений на основе IP:

<Directory /usr/share/phpmyadmin>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /etc/phpmyadmin/.htpasswd

    <RequireAll>
        Require valid-user
        Require ip 203.0.113.50
        # Add more trusted IPs below:
        # Require ip 198.51.100.0/24
    </RequireAll>
</Directory>

Замените 203.0.113.50 на ваш фактический доверенный IP-адрес или подсеть. Сохраните файл и перезагрузите Apache:

sudo systemctl restart apache2

> Примечание: Если ваш IP-адрес часто меняется, рассмотрите использование VPN со статическим IP-адресом или полагайтесь только на HTTP Basic Authentication в сочетании с SSL.

Шаг 6 — Включение SSL для шифрования трафика

Отправка учётных данных базы данных по простому HTTP — критический риск безопасности. Вы всегда должны получать доступ к phpMyAdmin через HTTPS. Есть два основных подхода:

Вариант A — Использование SSL-сертификата Let’s Encrypt (бесплатно)

Если у вас есть доменное имя, указывающее на ваш сервер, установите Certbot:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com

Certbot автоматически настроит Apache для перенаправления HTTP на HTTPS и установит бесплатный автоматически обновляемый сертификат.

Вариант B — Использование коммерческого SSL-сертификата

Для производственных сред, обрабатывающих конфиденциальные данные, коммерчески выданный SSL-сертификат обеспечивает более сильные сигналы доверия и защиту гарантией. Вы можете получить доверенные SSL-сертификаты непосредственно от SSL-сертификатов AlexHost, с вариантами от проверки домена (DV) до расширенной проверки (EV).

После установки вашего SSL-сертификата убедитесь, что URL phpMyAdmin использует https://:

https://yourdomain.com/phpmyadmin

Шаг 7 — Доступ к phpMyAdmin

С установкой и мерами безопасности на месте откройте браузер и перейдите на:

https://your_server_ip_or_domain/phpmyadmin

Вы столкнётесь с двумя запросами аутентификации подряд:

  1. Запрос HTTP Basic Authentication — введите имя пользователя и пароль, которые вы создали с помощью htpasswd
  2. Страница входа phpMyAdmin — введите имя пользователя MySQL/MariaDB (например, root) и его пароль

После успешного входа у вас будет полный доступ к вашим базам данных MySQL через графический интерфейс phpMyAdmin.

Решение распространённых проблем

phpMyAdmin возвращает ошибку 404 Not Found

Конфигурация Apache может быть не связана или не включена. Выполните:

sudo a2enconf phpmyadmin
sudo systemctl reload apache2

Также проверьте наличие символической ссылки:

ls -la /etc/apache2/conf-available/phpmyadmin.conf

Ошибка «Cannot Connect to MySQL Server»

Проверьте, что MySQL/MariaDB работает:

sudo systemctl status mysql
# or for MariaDB:
sudo systemctl status mariadb

Если он остановлен, запустите его:

sudo systemctl start mysql

HTTP 500 Internal Server Error

Это часто указывает на отсутствие модуля PHP. Установите необходимые расширения PHP:

sudo apt install php-mbstring php-zip php-gd php-json php-curl -y
sudo systemctl restart apache2

Пустая страница после входа

Очистите кэш браузера или проверьте журналы ошибок Apache для получения подробной информации:

sudo tail -f /var/log/apache2/error.log

Сводка лучших практик безопасности

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

Мера безопасностиСтатус
HTTP Basic Authentication включена
SSL/HTTPS настроена
Администрация
VPS Администрация
Администрация

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Быстрый доступ к информации
Быстрый доступ к информации

Сэкономьте время и получите быстрый ответ на ваш вопрос

Решайте проблемы сами
Решайте проблемы сами

База знаний содержит подробные руководства, позволяющие самостоятельно решать технические задачи.

Повышение квалификации
Повышение квалификации

Используя базу знаний, вы расширяете свои знания о веб-хостинге и связанных темах

Иллюстрации и диаграммы
Иллюстрации и диаграммы

Многие статьи сопровождаются иллюстрациями и диаграммами, что упрощает понимание сложных процессов и настроек.

Полезные приемы
Полезные приемы

Вы найдете полезные советы и трюки для повышения производительности вашего сайта или веб-приложения.

Актуальность заданных тем
Актуальность заданных тем

Информация в базе знаний регулярно обновляется, чтобы отражать последние изменения и тенденции в области ИТ-инфраструктуры и услуг AlexHost.

Не нашли нужную тему? Есть отличное решение

Уважаемые клиенты! Ваш комфорт — наш приоритет!

Кроме того, мы даем вам возможность активно участвовать в создании нашей базы знаний. Если у вас есть темы или вопросы, которые вы хотели бы включить в нашу базу данных, дайте нам знать! Мы готовы написать подробные статьи и руководства на основе ваших потребностей.

Мы стремимся сделать ваш опыт работы с AlexHost максимально удобным и эффективным, и ваш вклад в базу знаний помогает нам достичь этой цели. Связаться с нами ->
info@alexhost.com и дайте нам знать, как мы можем сделать ваше пребывание у нас еще лучше.

Solution Image