WindowsとLinuxの間でMySQLデータを共有しますか?

WindowsとLinuxの間でMySQLデータを共有しますか?

WindowsとLinuxディストリビューション(Mint)間でMySQLデータベースファイルを共有しようとしています。デュアルブートとは別のデータパーティション(NTFS)があります。

umaskパーティションをマウントし、所有権を「mysql:mysql」に設定し、aを000(chmod 777)に設定しようとしましたが、MySQLは常に次のように言います。

Fatal error: Can't open and lock privileges tables: Table 'host' is read only

試験を終えたこれしかし、まだ動作しません。どんなアイデアがありますか?私は私のコンピュータに2つのデータベースコピーをしたくありません。

ベストアンサー1

これを行う方法を提案する多くのWeb投稿がありますが、実際に機能させる方法を教えてくれる投稿が見つかりません。 それで、数週間の困難の終わりに、ついに私に役立つ解決策があります。:-)


プラットフォーム: 各システムへのデュアルブート、Windows 10/Debian 8.5、MySQL 5.6。

ヒント:Debian BackportではなくOracleからMySQL 5.6にアップグレードしてください。破損して正しく取り付けられていません。

警告する!

  • 次の操作を行うと、mount共有パーティション内のすべてのファイルの所有権が変更されます。最初はこれが心配でしたが、これまでは問題になることが証明されていませんでした。

  • 始める前にすべてをバックアップしてください。

  • 2つの独立したバックアップが1つより優れています。私を信じてください。私はMidnight Lightを1〜2回見たことがあり、そのようなものをもう一度見たくありません。

  • 他の人は、Windowsは大文字と小文字を区別せず、Linuxは大文字と小文字を区別するため、名前をすべて小文字にする必要があると指摘しました。これは、データベース名が mysql/ にファイル名データフォルダに保存されたときに変換されるため、少なくとも最小限という意味のようです。

背景:MS AccessデータをWindowsからLinuxに移動しています。最初のステップは、私のデータをMS Accessの外部に移動することです。 WindowsにMySQL 5.6をインストールし、MDBToolsを使用してAccessからMySQLにテーブルをコピーして構造をコピーし、AccessからODBCを使用してデータを移動しました。完全に簡単ではなく、いくつかの名前やその他の調整が必要です。たとえば、「ok?」というフィールドの名前を「ok」に変更し、インデックスを調整して主キーに注意を払う必要がありました。その後、テーブルがまだAccessにあるかのように引き続きアクセスできるように、ODBCを介してテーブルをAccessに再接続しました。これで、テーブルをLinuxでもアクセスできる場所に移動する準備が整いました。

必要な Windows の変更から始めます。

1)設定適切なサイズのntfs共有パーティション(私のパーティションはE:と呼ばれ、約55GB)。

(ヒント:最初は十分に大きくしてください。ある時点でデータベースを大きくする必要がありましたが、本当に苦労しました。今ではmysqlデータベースに加えて、共有Thunderbird / IcedoveとFirefoxプロファイルをここに保存します。WindowsからLinuxに切り替えるときの音楽、スプレッドシート、文書などの他の共有ファイル)。

2)移動するmysql データベースフォルダは C: から E:
--from: C:/ProgramData/MySQL/MySQL Server 5.6/data/
--to: E:/mysql5.6/ です。

三)修正する(Windows)my.iniファイルは新しいmysqlサーバーフォルダを指します。
-- このファイルを編集します: C:/ProgramData/MySQL/MySQL Server 5.6/my.ini
-- このパラメータを変更します: datadir="E:/mysql5 . 6" 6/データ\"

(末尾のバックスラッシュが何であるかはわかりませんが、維持してください。)

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

ヒント:

  • 後でLinuxユーザー「mysql」がmysqlファイルを所有できるようにするには、「permissions」オプションが必要です。

  • これにより、最初にすべてのファイルの所有権が「root」に変更されます。

  • uid、gid、umode、dmode、およびfmodeオプションは、ファイルの所有権と権限を個別に変更する権限オプションを無効にするため、ここに含めないでください。インストールで「default_permissions」が報告された場合は問題が発生したため、問題が解決されるまで続行できません。 (user_id、group_id、およびその他のマウントオプションにはこの問題はないようで、「権限」オプションを使用して機能します。)

  • マウントタイプがntfsかntfs-3gかは重要ではないようです。

  • 「推奨」優先順位の副作用は、パーティション内のすべてのファイルが再度所有されることです(Windowsでも同様です)!

三)共有パーティション

mount -a (または再起動)

4)すべてのファイルの所有権の変更デフォルトのユーザー名として

chown -R <your Linux username>: /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がLinuxユーザー名を知らないため、すべてのファイルとフォルダのWindows所有権が「アカウント不明」に変更されました。

また、セキュリティファイルとディレクトリ「継承」があるとオフになると思います(わかりません)。共有パーティションにツリーをコピーすると、セキュリティ権限に継承が作成されます。ところで、Linuxを搭載した後に何が起こるのかを調べてみると、セキュリティ権限が継承されないようです。代わりに絶対的な安全パラメータがあります。

灰色でマークされたチェックボックスは、カスタマイズされた特殊権限がある場合に灰色で表示される特殊権限チェックボックスを除いて、親エントリから継承された値を示します。

特殊権限は一般権限に追加されるのではなく、一般権限の代替ビューであるように見えます。 (Windows権限ツールを初めて使用する場合は、始める前にテストファイルで試してください。)

これに関するMS文書は、誤った列見出しのためにすべて混乱しました。ここ、問題を解決できるように報告しました。

すべてのファイルと権限の所有権は、次の2つの「アカウント不明」SIDの1つです。 (S-1-5-21-...)

これで、Windowsの所有者が所有者ではないため、ファイルのセキュリティを変更するのが難しくなります。したがって、最初のステップは、セキュリティパラメータを変更したいファイルの所有権を取り戻すことです。

mysqlが再び機能するようにするには(Linux mysqlサーバーがそれにアクセスした後)、ファイルにいくつかのセキュリティ権限を追加する必要があります。 4人のユーザーそれぞれに追加してテストしましたが、管理者、システム、およびS-1-xxxユーザーにすべての権限を付与した場合、mysqlは起動しませんでした。しかし、誰もがより多くの権限を与えると、mysqlが機能し始めました。 (すべての人の権限が影響を与えるのが奇妙に見えるので、mysqlに小さなバグがあると疑われます。)

1)選ぶファイル: E:/mysql5.6/dataauto.cnf

2)所有権を持ってください。プロパティを右クリックしてセキュリティ|アドバンス|所有者:...変更Enterキーを押してOK

今、あなたはE:/mysql5.6/dataauto.cnfの所有者です。

三)置くE:/mysql5.6/dataauto.cnfに対する次の権限:

再利用してください:プロパティ|セキュリティ高度な「すべて
」を選択して編集| 「詳細権限の表示」をクリックします。
次の項目が選択されていることを確認してください。

  • フォルダ/実行ファイルの一覧、
  • 拡張属性を読み、
  • 読み取り権限

その後、[OK]をクリックして[OK]

最後に、完全なテストを実行します。

次のテストシーケンスは、Linux MySQLサーバーの起動時にWindows MySQLサーバーの起動機能を妨げないことを確認します。

1) Windows で Windows mysql サーバを起動し、
2) Linux で再起動し、Linux mysql サーバを起動し、
3) Windows で再起動し、mysql サーバを再起動します。


更新できるようにここに問題を報告してください。

おすすめ記事