phpMyAdmin
phpMyAdmin — веб-интерфейс на PHP для управления MySQL и MariaDB: таблицы, запросы, пользователи и дампы прямо из браузера.
Что такое phpMyAdmin
phpMyAdmin — свободный веб-интерфейс для администрирования MySQL и MariaDB, написанный на PHP. Ставится на веб-сервер, открывается в браузере и позволяет делать всё то же, что консольный клиент mysql, только мышкой: смотреть и править таблицы, выполнять SQL-запросы, заводить пользователей, снимать и заливать дампы.
Проект существует с 1998 года и стал стандартом де-факто на shared-хостинге: у большинства российских и зарубежных провайдеров это единственный доступный способ добраться до базы, потому что SSH там не дают. Распространяется под GPL.
Что умеет
- Структура — создание и изменение таблиц, колонок, индексов, внешних ключей без единой строки DDL.
- Данные — просмотр, фильтрация, правка строк в табличном виде.
- SQL-консоль — произвольные запросы с подсветкой и историей.
- Импорт-экспорт — дампы в SQL, CSV, JSON и обратно.
- Пользователи и права —
GRANTчерез интерфейс. - Диагностика —
EXPLAINзапроса, статус сервера, список процессов, переменные. - Designer — визуальная схема связей между таблицами.
Установка
sudo apt install phpmyadmin
# либо вручную рядом с сайтом
Через Docker — быстрее и чище, особенно для локальной разработки:
# docker-compose.yml
services:
db:
image: mariadb:11
environment:
MARIADB_ROOT_PASSWORD: secret
volumes:
- dbdata:/var/lib/mysql
phpmyadmin:
image: phpmyadmin:latest
environment:
PMA_HOST: db
ports:
- "127.0.0.1:8080:80" # только localhost, не наружу
depends_on:
- db
volumes:
dbdata:
Обратите внимание на 127.0.0.1:8080:80: порт публикуется только на локальный интерфейс. Запись 8080:80 открыла бы панель управления базой всему интернету.
Безопасность — главное про phpMyAdmin
phpMyAdmin — одна из самых сканируемых целей в вебе. Боты перебирают /phpmyadmin, /pma, /myadmin на каждом IP-адресе круглосуточно, а найденная панель с паролем root:root означает полный доступ к вашим данным. Многие взломы сайтов на массовом хостинге начинались именно здесь.
Минимум, который нужно сделать:
- Не держать на публичном URL. Либо доступ через SSH-туннель (
ssh -L 8080:localhost:8080 user@server), либо через VPN, либо по списку IP. - Сменить адрес с
/phpmyadminна неочевидный — это не защита, но отсекает поток тупых ботов. - Добавить второй слой аутентификации — HTTP Basic на уровне Nginx поверх штатного входа.
- Только TLS. По HTTP пароль от базы уходит открытым текстом.
- Не заходить под
root. Отдельный пользователь с правами только на нужную базу. - Обновлять. В phpMyAdmin регулярно находят уязвимости, и старая версия — известная проблема.
location /db-panel/ {
allow 203.0.113.10; # офисный IP
deny all;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:8080/;
}
Ограничения
- Импорт больших дампов не работает. Загрузка упирается в
upload_max_filesize,post_max_sizeиmax_execution_timePHP. Дамп на несколько гигабайт через браузер залить нереально — нуженmysql < dump.sqlв консоли. - Тяжёлые запросы отваливаются по таймауту веб-сервера, а не завершаются.
- Только MySQL и MariaDB. Для PostgreSQL есть phpPgAdmin и pgAdmin.
Альтернативы
| Инструмент | Формат | Особенность |
|---|---|---|
| Adminer | Один PHP-файл | Легче phpMyAdmin, поддерживает PostgreSQL, SQLite и другие |
| pgAdmin | Веб | Стандарт для PostgreSQL |
| DBeaver | Десктоп | Универсальный клиент под все СУБД |
| MySQL Workbench | Десктоп | Официальный клиент Oracle, ER-диаграммы |
mysql |
CLI | Всегда доступен, без лимитов PHP |
Adminer заслуживает отдельного упоминания: это буквально один PHP-файл, который кладут на сервер, пользуются и удаляют — меньше кода, меньше поверхность атаки.
Связанные термины
- MySQL / MariaDB — СУБД, которыми управляет phpMyAdmin
- SQL — запросы, выполняемые из консоли панели
- Дамп базы данных — экспорт и импорт
- Панели управления хостингом — где phpMyAdmin встречается по умолчанию
- LEMP-стек — окружение, в котором он работает
- Хостинг — shared-хостинг и доступ к базе
Готовы запустить GPU-задачу?
Запустить GPU-сервер