phpMyAdmin и adminer: панели для базы
Как поставить веб-панель для базы на VDS и закрыть её так, чтобы она не стала входной дверью: доступ по паролю, ограничение по адресу, альтернативы.
Обновлено 23 августа 2026 г.
Веб-панель удобна для разовых правок и просмотра таблиц. Она же — самая частая причина взлома сервера: адреса /phpmyadmin перебираются автоматически, а форма входа отдаёт прямой доступ к данным.
Adminer: один файл
Adminer — это один PHP-файл, поддерживает MySQL, PostgreSQL и SQLite. Ставить нечего:
mkdir -p /var/www/tools
curl -L -o /var/www/tools/adminer.php \
https://github.com/vrana/adminer/releases/latest/download/adminer.php
chown www-data:www-data /var/www/tools/adminer.php
Нужен работающий PHP-FPM. Файл лучше переименовать в что-то неочевидное — это не защита, но убирает массовое сканирование.
phpMyAdmin
apt install -y phpmyadmin
Пакет сам подключается к Apache; для Nginx укажите путь вручную:
location /db-панель {
alias /usr/share/phpmyadmin;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
}
Обязательная защита
Панель без этих трёх пунктов ставить нельзя.
Доступ только с вашего адреса:
location /db-панель {
allow 203.0.113.10;
deny all;
}
Дополнительный пароль на уровне веб-сервера:
apt install -y apache2-utils
htpasswd -c /etc/nginx/.htpasswd admin
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
И третье — только по HTTPS: сертификат Let's Encrypt. Без него пароль от базы уходит открытым текстом.
Лучший вариант: без панели снаружи
Если адрес у вас динамический, не открывайте панель вовсе. Поднимите SSH-туннель и работайте настольным клиентом — DBeaver, TablePlus, HeidiSQL:
ssh -L 3307:127.0.0.1:3306 root@ВАШ_АДРЕС -N
Подробности — удалённое подключение. Так наружу не выставлено ничего, кроме SSH, и панель просто не нужна.
Частые ошибки
| Симптом | Причина |
|---|---|
Браузер скачивает adminer.php | PHP не подключён к этому пути |
#1045 Access denied | Пользователь базы привязан к другому хосту |
| Импорт большого дампа обрывается | Малы upload_max_filesize и max_execution_time; лучше импортировать из консоли |
В логах тысячи запросов к /phpmyadmin | Обычное сканирование — панель должна быть закрыта |
| Панель работает, а сайт нет | Общий пул PHP-FPM исчерпан тяжёлыми запросами панели |
Дампы через веб-панель на больших базах обрываются по таймауту. Настоящая резервная копия делается из консоли по расписанию — резервные копии баз.