VDS · Базы данных

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.phpPHP не подключён к этому пути
#1045 Access deniedПользователь базы привязан к другому хосту
Импорт большого дампа обрываетсяМалы upload_max_filesize и max_execution_time; лучше импортировать из консоли
В логах тысячи запросов к /phpmyadminОбычное сканирование — панель должна быть закрыта
Панель работает, а сайт нетОбщий пул PHP-FPM исчерпан тяжёлыми запросами панели

Дампы через веб-панель на больших базах обрываются по таймауту. Настоящая резервная копия делается из консоли по расписанию — резервные копии баз.