15%

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

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

Используйте код:

Skills
Начать
01.11.2024

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

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

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

Содержание

  1. Предварительные требования
  2. Шаг 1 — Обновление системы и индекса пакетов
  3. Шаг 2 — Установка phpMyAdmin
  4. Шаг 3 — Настройка Apache для phpMyAdmin
  5. Шаг 4 — Защита phpMyAdmin с помощью HTTP Basic Authentication
  6. Шаг 5 — Ограничение доступа по IP-адресу (опционально, но рекомендуется)
  7. Шаг 6 — Включение SSL для шифрования трафика
  8. Шаг 7 — Доступ к phpMyAdmin
  9. Устранение распространенных проблем
  10. Заключение

Предварительные требования {#prerequisites}

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

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

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

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

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

sudo apt update && sudo apt upgrade -y

Шаг 2 — Установка phpMyAdmin {#step-2}

Установите 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 {#step-3}

В некоторых конфигурациях 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 {#step-4}

По умолчанию любой, кто знает 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-адресу (опционально, но рекомендуется) {#step-5}

Для еще более надежной защиты ограничьте доступ к 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 для шифрования трафика {#step-6}

Отправка учетных данных базы данных по простому 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-сертификаты непосредственно от AlexHost SSL Certificates, с опциями от Domain Validation (DV) до Extended Validation (EV) сертификатов.

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

https://yourdomain.com/phpmyadmin

Шаг 7 — Доступ к phpMyAdmin {#step-7}

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

https://your_server_ip_or_domain/phpmyadmin

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

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

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

Устранение распространенных проблем {#troubleshooting}

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

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

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

Мера безопасностиСтатус
15%

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

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

Используйте код:

Skills
Начать