mysql_install_dbについて

MySQL公式バイナリにはscripts/mysql_install_dbというスクリプトがあって、これはmysqlデータベース(システムテーブル)を生成するのにしようします。通常はダウンロードしてきたtarballを解凍した直後に使用します(これがインストール作業に相当)。

ところがソースからコンパイルした場合には、scriptsフォルダというのは無くて、代わりにbinディレクトリ以下にmysql_install_dbが配置される形となります。しかもこのbin/mysql_install_dbはコンパイル時(configure)の--prefixに依存する内容になっているため、例えば--prefix=/usr/local/mysqlとしてビルドした場合にはこの場所でないと動かないです。

一方、公式バイナリ(これも--prefix=/usr/local/mysqlでビルドされている)はどの場所でもmysql_install_dbスクリプトが動作します。(/home/mir/mysqlとかでもok)

通常、ソースからコンパイルした場合には"./configure&& make && make install"でそのまま動かすかたちになるのであまり影響ないですが、ソースからコンパイルしたMySQLをどこかに持っていこう(配布するとか)とする場合にはこれに引っかかります。

とりあえず簡単な解決法は、公式バイナリのscripts/mysql_install_dbを拝借してしまうこと。とりあえずこれで逃げれます。



ちなみに、、、、

  • i686x86_64でmysql_install_dbに違いは無い(diffで確認)
  • 独自ビルドだと--prefix依存なのが、公式バイナリは"."(カレントディレクトリ)が代替使用されている

もしかするとscriptだけprefixを変更する方法あったりするのかな。

→ ビルド後にmake_binary_distributionスクリプトを使えば良さげ。
→ 追ってしらべますかね。