Совместное использование данных MySQL между Windows и Linux?

Добавьте net.ifnames=0 в командную строку ядра (через grub или что вы там используете)

Проблема связана с нестандартными "стандартными" именами, присвоенными сетевым интерфейсам. Опция net.ifnames=0 командной строки возвращает имена сетевых устройств к старым традиционным именам. (eth0, wlan0 и т.д.)

2
13.04.2017, 15:22
1 ответ

В Интернете есть несколько сообщений, предполагающих, что это можно сделать, но я не смог найти ни одного сообщения, рассказывающего мне, как заставить это действительно работать. Итак, вот решение, которое наконец-то работает для меня после нескольких недель борьбы с этим. : -)


Платформа: Двойная загрузка, Windows 10 / Debian 8.5, с MySQL 5.6 на каждой.

Совет: Обновите MySQL 5.6 с Oracle, а не с Debian Backport, так как он сломан и не установится должным образом.

Осторожно!

  • Когда вы выполните монтирование ниже, это изменит владельца ВСЕХ ваших файлов в общем разделе. Сначала это меня беспокоило, но пока не оказалось проблемой.

  • Перед тем, как начать, сделайте резервную копию всего.

  • Две независимые копии лучше, чем одна, поверьте мне, я видел полуночный свет раз или два и больше этого не хочу.

  • Другие отмечали, что, поскольку в Windows регистр символов не учитывается, а в Linux регистр учитывается, вы должны сохранять свои имена в нижнем регистре, я предполагаю, что это означает как минимум имена ваших баз данных, поскольку они преобразуются в имена файлов при сохранении в папка mysql / data.

Справочная информация: Я перемещаю свои данные MS Access из Windows в Linux. Первым шагом было переместить мои данные из MS Access. Я установил MySQL 5.6 в Windows и скопировал свои таблицы из Access в MySQL с помощью MDBTools, чтобы скопировать структуру и получить доступ к ODBC для перемещения данных. Это было не совсем просто и требовало некоторых настроек имени и других настроек, например мои поля названы "ок?" пришлось переименовать в «ok», и мне пришлось настроить индексы и обратить внимание на первичные ключи.Затем, чтобы я мог продолжать получать доступ к этим таблицам, как если бы они все еще находились в Access, я снова связал таблицы с Access через ODBC. Теперь таблицы были готовы к перемещению туда, где Linux также мог получить к ним доступ.

Начните с необходимых изменений Windows:

1) Настройте общий раздел ntfs подходящего размера (мой называется E: и занимает около 55 ГБ).

(Совет: сделайте его достаточно большим в первый раз. В какой-то момент мне пришлось увеличить свой, что было настоящей проблемой. В дополнение к базам данных mysql, теперь я храню здесь свои общие профили Thunderbird / Icedove и Firefox, поскольку ну , как и другие общие файлы, такие как музыка, электронные таблицы и документы, когда я перехожу с Windows на Linux.)

2) Переместите вашу папку базы данных mysql из C: в E:
--from: C: / ProgramData / MySQL / MySQL Server 5.6 / data /
--to: E: /mysql5.6/

3) Обновите ваш (windows) файл my.ini, чтобы он указывал на новую папку сервера mysql:
- отредактируйте этот файл: C: / ProgramData / MySQL / MySQL Server 5.6 / my.ini
- измените этот параметр: datadir = "E: /mysql5.6/data \"

(Я не знаю, для чего нужна обратная косая черта в конце, но оставьте ее там.)

4) Тест в windows:
Загрузить сервер MySQL через:
(меню "Пуск") | MySQL | Системный лоток монитора | Запуск экземпляра (из панели задач)
[красный индикатор на значке должен стать зеленым, если экземпляр сервера запускается нормально]

Затем внесите некоторые изменения в Linux:

1) Обновление my.ini, чтобы указать на новую папку сервера mysql
- отредактируйте этот файл: / etc / mysql / my.ini
- измените этот параметр: datadir = "/ home / howard / Shared / mysql5.6 /"

2) Добавьте строку монтирования в fstab:

LABEL="Shared"  /home/username/Shared/  ntfs  rw,nosuid,nodev,relatime,user_id=username,group_id=groupname,permissions,allow_other,noatime 0 2

Подсказки:

  • Нам нужна опция «permissions», чтобы позволить файлам mysql позже принадлежать пользователю linux mysql.

  • Первоначально это изменяет владельца всех файлов на «root» !!

  • Вы не должны включать здесь параметры uid, gid, umode, dmode и fmode, поскольку они отключат параметр «разрешения», который позволяет вам индивидуально изменять владельца и права доступа к файлам. Если ваше монтирование сообщает "default_permissions", значит, у вас проблема, и вы не можете продолжить, пока не исправите ее. (user_id, group_id и другие параметры монтирования, похоже, не имеют этой проблемы и работают нормально с опцией 'permissions'.)

  • Кажется, не имеет значения, какой у вас тип монтирования - ntfs или ntfs-3g.

  • Побочным эффектом приоритета «разрешений» является то, что все файлы в разделе будут повторно принадлежать (даже в Windows)!

3) Смонтируйте ваш общий раздел

mount -a (или перезагрузите)

4) Измените владельца всех файлов на ваше основное имя пользователя

chown -R <ваше имя пользователя Linux>: / home / user / Shared / *

5) Измените владельца файлов mysql на 'mysql'

chown -R mysql: / home / user / Shared / mysql5.6

ВАЖНО: Linux mysql должен иметь файлы, принадлежащие пользователю с именем 'mysql', иначе сервер будет давиться. В Windows это, похоже, не вызывает такого беспокойства.

Тест в Linux:

sudo mysql -u root --password="<your password>"
mysql> show databases;
mysql> quit

Вернитесь в Windows и исправьте то, что только что сломалось в Linux:

В этот момент мой сервер mysql не запускался.После небольшого исследования я нашел вот что это исправить:

Во-первых, когда я смонтировал свой общий раздел как ntfs с параметром «разрешения», а затем сменил владельца файла, он изменил владение Windows для всех файлов и папок. в "Аккаунт неизвестен",потому что Windows не знает об именах пользователей Linux.

Также я думаю (но не уверен), что если существовало «наследование» файла безопасности и каталога, оно отключалось. Если я копирую дерево в свой общий раздел, оно создает наследование в разрешениях безопасности. Но когда я исследовал, как это было после того, как Linux смонтировал его, оказалось, что наследования разрешений безопасности не было. Вместо этого были абсолютные параметры безопасности.

Закрашенные серым флажки означают унаследованные от родителя значения, ЗА ИСКЛЮЧЕНИЕМ флажка «Особые разрешения», где он будет неактивен, если есть специальные настраиваемые разрешения.

Специальные разрешения кажутся лишь альтернативой обычным разрешениям, а не в дополнение к обычным разрешениям. (Если вы не знакомы с инструментами разрешений Windows, сначала поиграйте с ними в тестовом файле перед тем, как начать.)

Документация MS по этому поводу испорчена, с неправильными заголовками в столбцах здесь , о которых я сообщил, чтобы они могли их исправить.

Теперь все права собственности на файлы и права доступа являются одним из двух идентификаторов SID «Неизвестная учетная запись», которые выглядят примерно так: (S-1-5-21 -...)

Это немного усложняет изменение безопасности файлов, так как владелец Windows теперь не является владельцем. Итак, первый шаг - вернуть право собственности на любой файл (ы), для которых мы хотим изменить параметры безопасности.

Чтобы заставить mysql снова работать (после того, как сервер Linux mysql коснулся его), нам нужно добавить небольшое разрешение безопасности к одному файлу.Я тестировал добавление его для каждого из четырех пользователей, но предоставление полного контроля администратору, системе и пользователю S-1-xxx не позволяло запускать mysql. Но когда я дал больше разрешений всем, mysql начал работать. (Я подозреваю, что в mysql есть небольшая ошибка, поскольку мне кажется странным, что разрешение всех должно иметь значение.)

1) Выберите файл: E: /mysql5.6 /dataauto.cnf

2) Станьте владельцем. Щелкните правой кнопкой мыши свойства, затем щелкните безопасность | продвинутый | Владелец: ... Изменить | Войти | нажмите Проверить | затем ОК

Теперь вы являетесь владельцем E: /mysql5.6/dataauto.cnf

3) Установите следующие разрешения для E: /mysql5.6/dataauto.cnf:

Снова используйте: properties | безопасность | расширенный
Выберите "Все", затем нажмите "Изменить" | Показать расширенные разрешения
Убедитесь, что отмечены следующие флажки:

  • Список папок / исполняемый файл,
  • Чтение расширенных атрибутов и
  • Разрешения на чтение

Затем нажмите OK | и применить | и ОК | OK

Наконец, выполните полный тест

Следующая последовательность тестов поможет убедиться, что при запуске сервера MySQL MySQL он не мешает запуску сервера Windows MySQL MySQL:

1) В Windows запустите Windows сервер mysql, затем
2) Перезагрузитесь в linux и запустите сервер mysql linux, затем
3) Перезагрузитесь обратно в Windows и снова запустите сервер mysql.


Пожалуйста, сообщайте о любых проблемах здесь, чтобы я мог обновить это.

2
27.01.2020, 22:13

Теги

Похожие вопросы