opened image

Руководство по установке и защите phpMyAdmin на Ubuntu 22.04

 

Зачем нужен phpMyAdmin:

 

phpMyAdmin — это веб‑интерфейс для MySQL/MariaDB, который позволяет:

 

  • создавать и удалять БД, таблицы, индексы;

  • выполнять SQL‑запросы без SSH;

  • импортировать/экспортировать дампы;

  • управлять пользователями и правами.

 

 

В этой статье мы рассмотрим актуальный способ установки phpMyAdmin 5.2.x на Ubuntu 22.04 LTS с Apache 2.4, включая жёсткие настройки безопасности (Alias, UFW, отключение root‑логина).

 

 

1. Предварительные условия

 

Компонент

Версия

Проверка

Ubuntu

22.04 LTS

lsb_release -d

MySQL/MariaDB

≥ 10.6

mysql -V

Apache

2.4.x

apache2 -v

PHP

≥ 8.1

php -v

 

 

 

Установите MySQL заранее: sudo apt install mysql-server (если ещё не поставлено).

 

 

2. Устанавливаем Apache и необходимые модули PHP

 

apt update && sudo apt install -y \
 apache2 wget unzip \
 php php-mysql php-zip php-json php-mbstring

systemctl enable --now apache2

Важно: php-mbstring и php-zip обязательны — без них авторизация и импорт SQL‑дампов могут не работать.

 

 

3. Скачиваем последнюю версию phpMyAdmin

 

Ubuntu‑репозиторий содержит устаревший пакет 4.x. Скачаем свежий релиз 5.2.x с официального зеркала:

 

cd /tmp
PMA_VER="5.2.1"
wget "https://files.phpmyadmin.net/phpMyAdmin/${PMA_VER}/phpMyAdmin-${PMA_VER}-all-languages.zip"
unzip phpMyAdmin-${PMA_VER}-all-languages.zip
mv phpMyAdmin-${PMA_VER}-all-languages /usr/share/phpmyadmin

 

Создаём папку tmp и назначаем права Apache:

 

mkdir /usr/share/phpmyadmin/tmp
chown -R www-data:www-data /usr/share/phpmyadmin
chmod 770 /usr/share/phpmyadmin/tmp

 

 

 

4. Конфигурируем Apache

 

Создадим файл /etc/apache2/conf-available/phpmyadmin.conf:

 

# Два алиаса для удобного доступа
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin/>
    Options SymLinksIfOwnerMatch
    AddDefaultCharset UTF-8
    Require all granted
</Directory>

<Directory /usr/share/phpmyadmin/setup/>
    Require all granted
</Directory>

 

 

 

 

Активируем конфигурацию и перезапустим Apache:

 

a2enconf phpmyadmin
systemctl restart apache2

Hardening: для продакшена добавьте Basic Auth или ограничение по IP, чтобы закрыть доступ к интерфейсу извне.

 

 

5. Настройка файервола (UFW)

 

Откроем HTTP и, при необходимости, HTTPS:

 

ufw allow 80/tcp
ufw allow 443/tcp
ufw reload

 

Если используется FirewallD:

 

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

 

 

 

 

6. Создаём тестовую базу и пользователя

 

mysql -e "CREATE DATABASE zomro;"
mysql -e "CREATE USER 'zomro'@'localhost' IDENTIFIED BY 'StrongPa$$w0rd';"
mysql -e "GRANT ALL ON zomro.* TO 'zomro'@'localhost';"
mysql -e "FLUSH PRIVILEGES;"

Используйте сильный пароль и ограничивайте хост (например 127.0.0.1).

 

Если наблюдаете ошибку:

 

 mysqli::real_connect(): (HY000/1045): Access denied for user 'zomro'@'localhost' (using password: YES)

 

 

Подключитесь к mysql:

 

mysql -uroot
ALTER USER 'zomro'@'localhost'
  IDENTIFIED BY 'StrongPa$$w0rd';
FLUSH PRIVILEGES;

 

 

7. Доступ к phpMyAdmin

 

Откройте браузер:

 

http://YOUR_SERVER_IP/phpmyadmin

 

 

 

Войдите под пользователем zomro.

 

 

8. Дополнительные меры безопасности

  1. Переместите интерфейс:

    Alias /dbadmin /usr/share/phpmyadmin
    

    и отключите старые алиасы.

  2. Включите HTTPS: воспользуйтесь Certbot:

    apt install certbot python3-certbot-apache
    certbot --apache -d db.example.com
  3. Fail2Ban: настройте фильтр по /var/log/apache2/*access.log, чтобы блокировать брутфорс.

 

 

9. Чек‑лист before prod

  • Apache слушает 80/443, UFW настроен.

  • Папка tmp принадлежит www-data, права 770.

  • root‑логин в phpMyAdmin отключён.

  • Конфиг Apache ограничивает доступ по IP или Basic Auth.

  • Резервные копии MySQL настроены (mysqldump/automysqlbackup).

 

 

Заключение

Вы установили и защитили phpMyAdmin 5.2.x на Ubuntu 22.04. Теперь можно управлять MySQL/MariaDB из браузера, не подключаясь по SSH. Помните о регулярных обновлениях (watchtower или unattended-upgrades) и мониторинге логов Apache, чтобы держать интерфейс под контролем.

Надёжность БД = стабильность бизнеса. Автоматизируйте бэкапы и не игнорируйте безопасность.