• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブルを他のHDにストライピングするには?)

テーブルを他のHDにストライピングする方法とは?

このQ&Aのポイント
  • テーブルを他のハードディスクにストライピングする方法を解説します。
  • 「DATA DIRECTORY」オプションを使用してテーブルを指定したハードディスクに配置することができますが、権限の問題が発生する可能性があります。
  • 権限の設定に関するエラーの対処方法を説明します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>システムファイルに作成した「/data」には「HD10G」のシンボリックリンクをはっているのですが、ここにMYSQLのテーブルをストライピングさせようと、MySQLにログインしたユーザーから以下のコマンドを実行しました。 環境についてはよく分かりませんが、気になるところがいくつかあるので確認してみることをお勧めします。 sudo chmod 777 /data これは多分、 /data シンボリックリンクに対して設定しているのであってディレクトリに対するアクセス権限を付与したことになっていないのかも知れません。そうすると、 /tmp はディレクトリですのでうまくいくわけです。 仮に、シンボリックリンクを作成して任意のアクセス権限を付けて、そのアクセス権限でアクセスできるとしたら、任意のファイルに対してアクセスできるというセキュリティ問題になることは常識的に考えられます。 つまり、 /data のリンク先のディレクトリに対するアクセス権限を変更する必要があると考えられます。 /data ==> /mnt/hda sudo chmod 777 /mnt/hda みたいな感じかなと思います。 参考になれば幸いです。

20081217
質問者

お礼

OrangeCup150さんの通りにやって見ましたがダメでした。 解決したので、自分の備忘録として詳しく書き残して置きます。 さらに調べた所、運良く全く同じ環境でこの問題に悩んでいる人をQ&Aサイトで発見しました。 「ERROR 1 (HY000): Can't create/write to file (Errcode: 13) /tmp」でググればヒットしました。 http://stackoverflow.com/questions/2783313/how-can-i-get-around-mysql-errcode-13-with-select-into-outfile Ubuntuのセキュリティツール、AppArmorがデフォルトで「/tmp」以外への作成や書き込みを禁止しているそうです。 /etc/apparmor.d/usr.sbin.mysqldを編集して /usr/sbin/mysqld { ... /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid w, /var/run/mysqld/mysqld.sock w, ... } を以下のように「/data/ r,」と「/data/* rw,」を追加して /usr/sbin/mysqld { ... /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid w, /var/run/mysqld/mysqld.sock w, /data/ r, /data/* rw, } 「# sudo /etc/init.d/apparmor reload」で編集を適応します。

関連するQ&A