Зачем нужен 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 |
|
MySQL/MariaDB | ≥ 10.6 |
|
Apache | 2.4.x |
|
PHP | ≥ 8.1 |
|
Установите 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. Дополнительные меры безопасности
Переместите интерфейс:
Alias /dbadmin /usr/share/phpmyadmin
и отключите старые алиасы.
Включите HTTPS: воспользуйтесь Certbot:
apt install certbot python3-certbot-apache certbot --apache -d db.example.com
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, чтобы держать интерфейс под контролем.
Надёжность БД = стабильность бизнеса. Автоматизируйте бэкапы и не игнорируйте безопасность.