ハードドライブを2つのパーティションに分割しているため、Ubuntuを簡単に再インストールして、ホームディレクトリのデータを失うことなく異なるバージョンを試すことができます。次のようなセットアップです。
20GB -> / (root)
180GB -> /home
私は多くの開発作業を行っているため、/var/www
フォルダーを/home/valorin/workspace
にシンボリックリンクしています。
しかし、MySQLデータファイルでもこれを行いたいと思っています。マシンを再インストールするたびに、完全なSQLdumpを実行してから、さらに作業を行う前にすべてのDBを復元する必要があることに悩まされています。
MySQLを壊さずにこれを行う最良の方法は何ですか?
実際、この質問に対するUbuntu固有の潜在的な答えがあります。
Gergoesリンクで述べたように、これは基本的に/ etc/mysql/my.cnfを変更し、datadir =[mysqld]セクション。これまでのところ、答えの不特定の部分。
Ubuntuのややモダンなバージョンを実行していると仮定すると、 AppArmor がデフォルトでインストールされ、/ usr/sbin/mysqldのプロファイルが強制モード。そのデフォルトのプロファイルは新しいデータディレクトリを受け入れない可能性が高いでしょう。
新しいdatadirが/ home/data/mysqlになると仮定しましょう。
ファイル/ etc/apparmor.d/usr.sbin.mysqldを開くと、ルールの中にこれらの2行があります。
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
上記の例を想定すると、これらの2行で置き換えるか(おそらく望ましい)補完する必要があります。
/home/data/mysql/ r,
/home/data/mysql/** rwk,
MySQLサーバーを新しいdatadirで起動する前に、新しいapparmorプロファイルを明示的に再ロードする必要もあります。
$ Sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
スーパーユーザーには、この問題を解決する方法についての手順ごとの素敵な手順があります
同じことを行うための別の命令セットがあります http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html
ここに再投稿されます。スーパーユーザーにできる場合は、オリジナルに投票してください。
パーミッションに関する一般的な混乱の後、問題はパーミッションとパスが正しくないことではなく、AppArmorがmysqlによる新しい場所への読み書きを妨げていることに気づきました。
これは私の解決策です:
まず、MySQLを停止して、いじっている間に奇妙なことが起こらないようにします。
$ Sudo stop mysql
次に、すべてのデータベースディレクトリを新しいホームに移動します。
$ Sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/
ファイルは移動しないでください。ファイルはmysqlによって生成され、フォルダー(データベース)を移動するだけです。
次に、mysqlが新しいフォルダーを使用できるようにAppArmorに丁寧に依頼します。
$ Sudo vim /etc/apparmor.d/usr.sbin.mysqld
行を追加します。
/new-mysql-dir/ r,
/new-mysql-dir/** rwk,
次に、mydirにdatadirが移動したことを伝えます。
$ Sudo vim /etc/mysql/my.cnf
行を変更します。
datadir=/var/lib/mysql
に:
datadir=/my-new-db-dir/
注:データベースのセットアップによっては、innodb-data-home-dirなども変更する必要がある場合があります。
次に、AppArmorを再起動して新しい設定を読み取ります。
$ Sudo /etc/init.d/apparmor restart
そして、新しいdatadirを使用してMySQLを再度起動します。
$ Sudo start mysql
お役に立てれば!
私がVirtualBoxを使用していて、MySQL datadirをホストシステムの共有フォルダーに移動する必要がある場合は、 http://vacilando.org/en/article/moving-mysql-dataの簡単なチュートリアルに従ってください。 -files-virtualbox-shared-folder
これは、Ubuntu固有ではありません。それにもかかわらず、ここに役立つかもしれないものがあります: http://developer.spikesource.com/wiki/index.php/How_to_change_the_mysql_database_location