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-panel {
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-panel {
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@YOUR_ADDRESS -N
Деталі — віддалений доступ. Так назовні виставлено лише SSH, і панель вам просто не потрібна.
Типові помилки
| Симптом | Причина |
|---|---|
Браузер завантажує adminer.php | PHP не підключено до цього шляху |
#1045 Access denied | Користувач бази даних прив'язаний до іншого хоста |
| Імпорт великого дампа переривається | upload_max_filesize і max_execution_time замалі; краще імпортувати з консолі |
Тисячі запитів до /phpmyadmin у логах | Рутинне сканування — панель потрібно закрити |
| Панель працює, а сайт — ні | Спільний пул PHP-FPM вичерпано важкими запитами панелі |
Дампи через вебпанель на великих базах даних обриваються за таймаутом. Справжній бекап роблять з консолі за розкладом — бекапи бази даних.