Как перенести базу данных MySQL с Windows на Linux (Ubuntu в частности)?

Есть база, объем большой, около 40 ГБ. Вопрос - как перенести все это счастье на Linux? Думал - можно просто файлы типа ibdata1 перенести, конфиги подкрутить - да и все. Провозился часа 4, нихрена. Чего делать? Спасибо.
Мы платим до 300 руб за каждую тысячу уникальных поисковых переходов на Ваш вопрос или ответ Подробнее
4 ОТВЕТА
Знаток (435)
Если есть две машины, на одной Линукс на другой Винда, берешь my.cnf на линуксе - там комментируешь строку bind-address 127.0.0.1 - таким образом разрешаешь удаленные подключения.

Даешь своему юзеру, которым собрался из Винды подключаться, все права:
GRANT ALL ON *.* TO 'USERNAME'@'IP_ADDRESS' IDENTIFIED BY 'PASSWORD';

Здесь USERNAME - юзер, который будет коннектиться от Винды, IP_ADDRESS - адрес хоста, откуда будешь коннектиться (я так полагаю, сеть локальная), PASSWORD - пароль этого юзера.

При помощи SQLYog подключаешься к виндовой базе и к линуксовой (два соединения). Правой кнопкой тыкаешь по той базе, которая у тебя на винде - выбираешь Copy to Different Host или как-то так. Выбираешь что и куда копировать. Вот и вся сказка.

PS Не забудь потом установить обратно bind-address, иначе можно будет откуда угодно коннектиться. Ну, и юзера убрать грантанутого...
Знаток (435)
Сдается мне, прощее можно сделать - в том же SQLYog есть Synchronization Wizard. Мне кажется, быстрее будет. Хотя хз
Знаток (435)
А просто скопировать ibdata1 и прочее в нужную папку - нельзя?
Знаток (435)
GRANT ALL ON *.* TO 'USERNAME'@'IP_ADDRESS' IDENTIFIED BY 'PASSWORD';

Ну не, таким образом пароли будут храниться в системной таблице mysql в НЕЗАШИФРОВАННОМ ВИДЕ. Следует писать так:

GRANT ALL ON *.* TO 'USERNAME'@'IP_ADDRESS' IDENTIFIED BY PASSWORD 'my_goddamn_secure_pass';
ПОХОЖИЕ ВОПРОСЫ