phpMyAdmin — импорт, экспорт, настройка и FAQ
Четвёртая глава раздела phpMyAdmin — про обмен данными между серверами, долговременные настройки интерфейса и типичные сбои из официального FAQ. Предполагается, что вы уже умеете выполнять SQL и работать со структурой БД из третьей статьи и знаете, как подключить phpMyAdmin из второй.
Дамп (dump) — файл с SQL-командами или табличными данными, из которого можно восстановить базу или перенести её на другой сервер. phpMyAdmin умеет импортировать такие файлы через браузер и экспортировать их обратно; для очень больших объёмов часто удобнее консольный клиент mysql или mysqldump — те же операции, что и в разделе MySQL.
Импорт данных
Импорт — загрузка внешнего файла в сервер MySQL/MariaDB: создание таблиц, вставка строк или выполнение произвольного SQL. Вкладка Импорт доступна на уровне сервера, базы или отдельной таблицы — контекст задаёт, куда по умолчанию попадут команды без явного USE database.
Поддерживаемые форматы
| Формат | Расширение / вид | Когда выбирать |
|---|---|---|
| SQL | .sql | Полный или частичный дамп структуры и данных — основной сценарий миграции |
| CSV | .csv | Табличные данные без DDL; удобно из Excel/LibreOffice после экспорта |
| XML | .xml | Структурированный обмен; нужен libxml в PHP |
| OpenDocument | .ods | Таблицы из LibreOffice / Excel (через ODS) |
Дополнительно phpMyAdmin принимает сжатые архивы ZIP, GZip, BZip2, если в PHP включены расширения zip, zlib (и bz2 для BZip2). Сжатие уменьшает время загрузки по сети, но не снимает лимиты PHP на разбор файла в памяти.
Лимиты загрузки в PHP
Браузер отправляет файл методом POST; размер и время обработки ограничивают директивы php.ini (см. также настройку веб-сервера для PHP):
| Директива | Смысл | Практическое правило |
|---|---|---|
upload_max_filesize | Максимальный размер одного загружаемого файла | Поднимайте по мере роста дампов |
post_max_size | Лимит всего тела POST-запроса | Должен быть строго больше upload_max_filesize |
max_execution_time | Секунды на выполнение скрипта | Большой импорт может упираться в 30–60 с по умолчанию |
memory_limit | Память процесса PHP | Крупные XML/ODS требуют запаса |
Типичный фрагмент php.ini для локальной разработки (значения подстраивайте под размер дампа):
upload_max_filesize = 128M
post_max_size = 130M
max_execution_time = 600
memory_limit = 256M
После правки перезапустите PHP-FPM или Apache, иначе новые лимиты не применятся.
Обход лимита браузера
Когда файл не проходит через форму загрузки, в официальном FAQ перечислены обходы:
$cfg['UploadDir']— каталог на диске сервера, куда вы кладёте дамп по FTP/SCP; в мастере импорта выбираете файл с сервера, а не с ПК.$cfg['TempDir']— каталог временных файлов импорта; обязателен при ограниченииopen_basedirв PHP.- Разбиение дампа — сторонние утилиты (например BigDump) режут один
.sqlна части; используйте только из доверенных источников. - Импорт из shell — надёжный путь для гигабайтных дампов:
mysql -u root -p shop < /path/to/dump.sql
В интерактивном клиенте MySQL то же самое через SOURCE:
USE shop;
SOURCE /path/to/dump.sql;
С версии 2.7+ движок импорта phpMyAdmin переработан: на актуальных релизах 5.2 большие файлы обрабатываются стабильнее, но лимиты PHP и права на каталоги всё равно нужно настраивать явно.
Пример фрагмента config.inc.php
$cfg['UploadDir'] = '/var/lib/phpmyadmin/upload';
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Каталоги должны существовать и быть доступны пользователю веб-сервера (www-data, apache и т.д.). При open_basedir оба пути должны попадать в разрешённый список — иначе импорт завершится ошибкой (см. раздел FAQ ниже).
Импорт текста в таблицу
Отдельный режим — загрузка текстового файла в уже существующую таблицу (столбцы сопоставляются в мастере). Временные файлы попадают в upload_tmp_dir из php.ini (часто /tmp на Linux). На shared-хостинге с жёстким open_basedir проверьте, что этот каталог разрешён и не переполнен.
Экспорт и резервные копии
Экспорт — обратная операция: phpMyAdmin читает метаданные и данные MySQL и формирует файл для скачивания. Вкладка Экспорт есть у сервера, базы и таблицы.
Режимы SQL-экспорта
| Режим | Результат | Когда достаточно |
|---|---|---|
| Быстрый | SQL-дамп всей выбранной области с настройками по умолчанию | Локальный бэкап перед экспериментом |
| Пользовательский | Выбор таблиц, только структура, структура+данные, отдельные опции | Миграция части схемы, перенос без данных |
Полезные галочки в пользовательском SQL-экспорте:
- DROP TABLE — перед
CREATEдобавитьDROP TABLE IF EXISTS(осторожно при восстановлении поверх живой базы); - IF NOT EXISTS — не падать, если объект уже создан на целевом сервере;
- раздельно структура и данные — удобно перенести схему на staging, а данные залить позже.
Другие форматы вывода — CSV, XML, JSON, PDF, OpenDocument, LaTeX и др. Для автоматизации и CI чаще используют SQL или CSV; PDF — скорее "снимок" для отчёта, не для восстановления.
Эквивалент в консоли
То, что phpMyAdmin делает в режиме "быстрый экспорт" одной базы, в терминале близко к:
mysqldump -u root -p --databases shop > shop_backup.sql
Только структура без строк:
mysqldump -u root -p --no-data shop > shop_schema.sql
Дамп SQL остаётся основным способом миграции между MySQL/MariaDB и восстановления после ошибки. Перед DROP DATABASE или массовым DELETE из третьей статьи имеет смысл сделать экспорт здесь или через mysqldump.
Управление пользователями MySQL
phpMyAdmin не хранит своих пользователей — вкладка Учётные записи пользователей (User accounts) показывает и меняет записи в таблицах привилегий MySQL (mysql.user и связанные). Изменения применяются сразу после сохранения.
| Действие | Что задаётся |
|---|---|
| Создать | Имя, хост (localhost, %, конкретный IP), пароль |
| Редактировать | Пароль, глобальные и объектные привилегии |
| Удалить | Удаление учётной записи с выбранного хоста |
| Привилегии | Уровни: глобальные, база, таблица, столбец, процедура |
Интерфейс рисует привилегии флажками; за кулисами выполняются те же GRANT / REVOKE, что и в SQL. Пример эквивалента вручную:
CREATE USER 'app'@'localhost' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON shop.* TO 'app'@'localhost';
FLUSH PRIVILEGES;
Для повседневной разработки заводите отдельного пользователя с минимальными правами на одну базу, а не работайте из панели под root — это пересекается с рекомендациями информационной безопасности.
Восстановление пароля root делается на уровне MySQL (официальная процедура сброса прав с остановкой сервера), а не через "сброс пароля phpMyAdmin". На shared-хостинге пароль сбрасывает провайдер.
Группы пользователей и настраиваемые меню (вкладка User groups) требуют настроенного configuration storage (pmadb) — см. следующий раздел.
pmadb — закладки, история, tracking
pmadb (phpMyAdmin configuration storage) — отдельная база MySQL с служебными таблицами. Без неё phpMyAdmin работает, но не сохраняет между сессиями закладки SQL, историю, связи таблиц, настройки UI и журнал tracking.
| Функция | Таблица (префикс pma__) |
|---|---|
| Закладки SQL | bookmark |
| История запросов | history |
| Связи таблиц (PDF-диаграммы, подсказки JOIN) | relation |
| Настройки интерфейса пользователя | userconfig |
| Отслеживание изменений схемы/данных | tracking |
Создание таблиц — скрипт sql/create_tables.sql из дистрибутива phpMyAdmin; затем в config.inc.php указывают имена таблиц:
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// … остальные таблицы по списку из create_tables.sql
Пользователь MySQL, под которым входите в phpMyAdmin, должен иметь INSERT/UPDATE/DELETE на эти служебные таблицы (или отдельная учётка controluser в конфиге). На локальном Open Server pmadb часто уже поднят; на продакшене его настраивают осознанно — лишняя база с метаданными тоже требует бэкапа.
Трансформации и MIME-типы
Для столбцов типа BLOB или бинарных данных в pmadb можно задать MIME-тип (например image/jpeg) и трансформацию — тогда при просмотре строки phpMyAdmin показывает миниатюру или ссылку на скачивание вместо hex-дампа.
- для inline-отображения JPEG нужно расширение GD2 в PHP;
- параметры хранятся в метаданных pmadb (
column_infoи связанные таблицы); - без pmadb трансформации недоступны.
Это удобно для полей "аватар", "скан документа", но не заменяет нормальное хранение файлов в объектном хранилище — для веб-приложений чаще выносят бинарники в S3/диск, а в БД держат URL (см. работу с БД из PHP).
Безопасность установки
phpMyAdmin не усиливает безопасность MySQL сам по себе — он лишь вызывает те привилегии, что есть у вошедшего пользователя. Рекомендации из документации Securing your phpMyAdmin installation:
| Мера | Зачем |
|---|---|
| HTTPS | Защита cookie сессии и пароля в транзите — см. HTTP и HTTPS |
Сложный blowfish_secret в config.inc.php | Шифрование cookie-режима аутентификации |
AllowNoPassword = false | Запрет входа с пустым паролем MySQL |
| Ограничение по IP / VPN / basic auth перед каталогом | Не публиковать админку БД в открытый интернет |
| Отдельный пользователь БД с минимальными правами | Повседневная работа без SUPER, FILE, SHUTDOWN |
| Удалить или закрыть setup после установки | Скрипт первоначальной настройки не должен быть доступен снаружи |
| Актуальные версии phpMyAdmin и PHP | Закрытие известных CVE |
На shared-хостинге (FAQ ISPs) избегайте входа под root из панели провайдера — используйте выданную учётку с правами только на вашу базу. Открытая phpMyAdmin без защиты — частая цель при тестировании на проникновение.
FAQ — типичные ситуации
Пустая страница или "кракозябры"
Симптомы: белый экран после входа, неверная кодировка вместо кириллицы.
- отключить сжатие вывода:
$cfg['OBGzip'] = false, в PHPzlib.output_compression = Off(FAQ 1.1); - проверить mbstring и кодировку соединения MySQL (
utf8mb4); - сверить версии Apache/nginx, PHP и MySQL/MariaDB с требованиями.
Apache падает при работе с phpMyAdmin
Часто устаревший модуль или конфликт PHP. Обновите стек; на IIS с устаревшим ISAPI перейдите на cookie-аутентификацию (FAQ 1.5).
Ошибка 404 после сохранения строки
Типично за reverse proxy — неверный $cfg['PmaAbsoluteUri']. Задайте полный URL установки, например https://db.example.com/phpmyadmin/, иначе редирект после POST уходит на несуществующий путь.
open_basedir при импорте
PHP запрещает писать во временные каталоги вне белого списка. Настройте $cfg['TempDir'] (и при необходимости UploadDir) на каталог внутри open_basedir (FAQ 1.11).
Не сжимается экспорт gzip
Нужно расширение zlib в PHP (function_exists('gzencode') должно быть true). Без zlib экспорт останется несжатым .sql.
Internet Explorer и SSL
Для старых IE + Apache иногда добавляли SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown (FAQ 1.10). Для современных браузеров актуальность низкая; оставьте в конфиге только если реально поддерживаете legacy-клиентов.
Версии СУБД
- MySQL 5.5+, MariaDB 5.5+ — поддерживаются текущим phpMyAdmin 5.2.
- Более старые серверы — старые релизы phpMyAdmin с официальной страницы загрузок.
phpMyAdmin и PostgreSQL
Не поддерживается. Для PostgreSQL используйте phpPgAdmin, pgAdmin, DBeaver или psql — тот же класс задач, другой протокол и диалект SQL.
Настройки интерфейса пользователя
Через Настройки (иконка шестерёнки или клавиша s) меняют:
- язык интерфейса и тему оформления;
- число строк на странице при просмотре таблицы;
- поведение SQL-редактора и консоли (Enter vs Ctrl+Enter).
Часть настроек сохраняется в pmadb (pma__userconfig), часть — в cookie браузера. Глобальные значения по умолчанию для всех пользователей задают в config.inc.php (разделы Browse mode, Export and import, SQL query box, Console в официальном Configuration).
Официальная документация в Open Server
Если phpMyAdmin установлен как в Open Server, локально доступны HTML-разделы (путь может отличаться в вашей сборке):
- index — оглавление
- Requirements
- Installation
- Configuration
- User Guide
- FAQ
Энциклопедия даёт сжатый маршрут на русском; точные имена и значения директив $cfg[...] сверяйте с полным текстом Configuration — там же описаны все таблицы pmadb и режимы аутентификации из статьи 2.
См. также
- phpMyAdmin — о разделе
- SQL, DDL и DML в интерфейсе
- Требования, установка и подключение
- Работа с базами данных из PHP
- PDO в PHP — подключение и безопасные запросы
- MySQL
- HTTP и HTTPS
- Тестирование на проникновение