Экспорт, импорт и перенос базы данных MySQL через phpMyAdmin
ПечатьКоротко: phpMyAdmin в cPanel позволяет сохранить базу данных MySQL в файл (экспорт) и загрузить файл в базу (импорт) прямо в браузере, без установки программ. Перенос базы на другой сервер состоит именно из этих двух действий и ещё одного: в настройках сайта нужно прописать доступ к новой базе.
Где найти phpMyAdmin
- Войдите в cPanel. Это можно сделать и из личного кабинета: откройте Мои услуги и выберите хостинг.
- В разделе Databases нажмите phpMyAdmin. Он откроется в новой вкладке.
- Слева показан список баз аккаунта. Их имена начинаются с логина cPanel и символа подчёркивания, например
login_shop.
Перед переносом базы
- Остановите изменения. Заказы, комментарии и регистрации, сделанные после экспорта, на новый сервер не попадут. Для интернет-магазина или посещаемого сайта включите режим обслуживания или выберите спокойное время.
- Сохраните оригинал. Не удаляйте базу на старом сервере, пока сайт несколько дней не проработает без проблем на новом.
- Переносите весь сайт? У файлов, почты и DNS свои шаги, они описаны в статье о переезде сайта в TopHost. Здесь речь идёт только о базе данных.
Шаг 1. Выгрузите базу
Через phpMyAdmin
- Нажмите на имя нужной базы в левой колонке. Откроется список её таблиц.
- Перейдите на вкладку Export.
- Выберите способ:
- Quick выгружает всю базу со стандартными настройками. Подходит почти всегда.
- Custom позволяет отметить отдельные таблицы, выбрать кодировку или включить сжатие.
- В поле Format оставьте SQL, если файл потом будет загружаться в MySQL.
- Нажмите Export (в некоторых версиях кнопка называется Go). Браузер скачает файл
.sql.
Совет: для большой базы выберите Custom и сжатие gzipped или zipped. Архив получается в несколько раз меньше, его быстрее скачать и затем загрузить.
Из командной строки
Если на старом сервере есть доступ по SSH, эта команда запросит пароль и сразу сохранит сжатую копию:
mysqldump -u old_user -p old_database | gzip > database.sql.gz
Каким бы способом Вы ни выгружали базу, откройте начало файла в текстовом редакторе и убедитесь, что в нём есть строки CREATE TABLE и INSERT, а не страница с ошибкой.
Шаг 2. Подготовьте базу назначения
Импорт выполняется в базу, которая уже есть в аккаунте. Если её ещё нет, откройте в cPanel MySQL Databases, создайте базу и пользователя и дайте ему все права (ALL PRIVILEGES) на эту базу. Подробно это описано в статье как создать базу данных MySQL в cPanel. Запишите имя базы, имя пользователя и пароль точно так, как их показывает cPanel, вместе с префиксом аккаунта.
База должна быть пустой. Если Вы загружаете данные в базу, где уже есть таблицы, сначала сделайте её экспорт на всякий случай.
Шаг 3. Импортируйте файл
Через phpMyAdmin
- Выберите слева базу, в которую нужно загрузить данные.
- Откройте вкладку Import.
- Нажмите Choose File (или Browse) и укажите файл на компьютере. Подходят
.sql, а также архивы.sql.gzи.sql.zip. - Формат оставьте SQL, остальные параметры без особой причины не меняйте.
- Прокрутите страницу вниз и нажмите Import. Дождитесь зелёного сообщения об успешном выполнении и только потом закрывайте вкладку.
Если файл слишком большой для браузера
Рядом с полем выбора файла phpMyAdmin пишет максимально допустимый размер. Если файл больше, попробуйте по порядку:
- Сожмите файл и повторите попытку: архив
.sql.gzв несколько раз меньше. - Импортируйте по SSH или через Terminal в cPanel (см. подключение к серверу по SSH). Сначала загрузите файл в аккаунт, затем выполните:
gunzip < database.sql.gz | mysql -u cpuser_dbuser -p cpuser_dbname
- Обратитесь в поддержку. Загрузите файл через File Manager или FTP и создайте тикет, указав путь к файлу и базу, в которую его нужно импортировать.
Шаг 4. Обновите настройки сайта
После переноса в конфигурационном файле сайта остаются старые реквизиты. Замените имя базы, пользователя и пароль на новые, а в качестве хоста укажите localhost. В WordPress это файл wp-config.php:
define( 'DB_NAME', 'cpuser_dbname' ); define( 'DB_USER', 'cpuser_dbuser' ); define( 'DB_PASSWORD', 'Ваш пароль' ); define( 'DB_HOST', 'localhost' );
Где хранят эти значения Joomla, OpenCart, PrestaShop и другие платформы, смотрите в статье о данных для подключения к MySQL.
Шаг 5. Проверьте сайт до смены DNS
Сайт на новом сервере можно открыть ещё до того, как домен будет направлен туда: для этого правится файл hosts на Вашем компьютере, как описано в статье как открыть сайт до делегирования домена. Проверьте главную, несколько внутренних страниц, вход в админку и формы. Если при переезде меняется и сам домен, учтите, что WordPress хранит старый адрес ещё и в базе данных, и его тоже нужно заменить.
Типичные ошибки и что они означают
| Ошибка или признак | Причина | Что делать |
|---|---|---|
#1046 No database selected | Перед импортом слева не выбрана база | Выберите базу и повторите импорт с её вкладки Import |
#1050 Table already exists | В базе назначения уже есть таблицы с такими же именами | Сделайте экспорт текущих данных на всякий случай, затем очистите базу или возьмите новую и повторите импорт |
#1044 Access denied на CREATE DATABASE | В файле есть команда создать или выбрать базу с другим именем | Удалите из файла строки CREATE DATABASE и USE (или выгрузите базу заново без них) и импортируйте в выбранную базу |
Unknown collation: 'utf8mb4_0900_ai_ci' | Дамп сделан на MySQL 8, а на новом месте работает версия сервера баз данных, которая не знает такой сортировки | Замените по всему файлу utf8mb4_0900_ai_ci на utf8mb4_unicode_ci в редакторе, который справляется с большими файлами, и повторите импорт в пустую базу |
Access denied; you need (at least one of) the SUPER privilege(s) | У представлений, триггеров или процедур в файле указан DEFINER с пользователем старого сервера | Удалите из файла фрагменты DEFINER=`...`@`...` или выгрузите базу заново без definer |
| Вопросительные знаки или непонятные символы вместо букв | При экспорте и импорте использовались разные кодировки | Выгрузите базу заново в utf8mb4 и импортируйте с той же настройкой |
| «Error establishing a database connection» | В конфигурационном файле неверные реквизиты или у пользователя нет прав на базу | Сверьте имена и пароль с cPanel буква за буквой (данные для подключения) и проверьте, что пользователь добавлен к базе |