MySQL5.7.11をソースからインストールする時にハマったこと

MySQL-5.6.28を使ってましたが、新しいサーバーにはMySQL-5.7.11をソースインストールすることにしました。

少しハマったので、MySQL-5.6.28からMySQL-5.7.11をソースインストールする時の変更点を下記にまとめました。

1.CMakeのオプション

・MySQL-5.6.28

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/usr/local/mysql/data
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci

・MySQL-5.7.11

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/usr/local/mysql/data
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/tmp/boost

5行目と6行目が追加したオプションです。
MySQL-5.7.11はBOOSTというオープンソースライブラリを使用しています。
そのため上記オプションを追加しないと下記のエラーが出てしまいます。

Could not find (the correct version of) boost.
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=<directory>

※2016/04/12 追記

-DDOWNLOAD_BOOST=1 で勝手にダウンロードしてくれるけど、
タイムアウトの設定が600秒になってて今日引っかかっちゃいました。

DOWNLOAD_BOOST_TIMEOUT を設定して、タイムアウトまでの時間を伸ばそうかなと思いましたが、やっぱりあらかじめダウンロードしたものを使うかと思って5.7.11で使用しているBOOSTのバージョンはどうなっているんだと調べたら、1.59.0を使用している模様。
5.7.12 も 1.59.0 を使用しているみたいなのであらかじめダウンロードして使うようにしました。
ちなみに、ソースコードの cmake/boost.cmakeの37行にBOOSTのダウンロードURLが記載してあります。
1.59.0以外のバージョンが使用できるかは未確認。

2.DBのインストールと初期化

・MySQL-5.6.28

./scripts/mysql_install_db --user=mysql \
                           --basedir=/usr/local/mysql/ \
                           --datadir=/usr/local/mysql/data/

・MySQL-5.7.11

./bin/mysqld --no-defaults \
             --user=mysql \
             --basedir=/usr/local/mysql/ \
             --datadir=/usr/local/mysql/data/ \
             --log-error-verbosity=3 \
             --initialize

まずMySQL-5.6.28では、
./scripts/mysql_install_db
を使用してDBのインストールを行いましたが、
MySQL-5.7.11では
./bin/mysqld
を使用してDBのインストールを行います。
(※mysql_install_dbを使用しても初期化はできますが、推奨されていません)

オプションについては、他にもオプションを追加してますが、それは気にせずに、ここで重要なオプションは下記オプションです。

--initialize

上記オプションを付けるとDBのインストールと初期化が行われます。

しかし–Initializeオプションで初期化を行うと、rootユーザーにランダムに生成されたパスワードが設定されてしまいます。

生成されたパスワードは初期化の際に出力される下記ログに含まれています。(*******にパスワードが表示される)

[Note] A temporary password is generated for root@localhost: ********

MySQL5.6.28と同じ挙動にするため–initializeオプションを下記に変更します。

--initialize-insecure

上記オプションを指定すると、パスワードが未設定になりますので、すぐに./bin/mysql_secure_installationを実行してパスワードを設定するようにしましょう。

3.他の変更点など

MySQL5.6.28では、匿名アカウントとtestデータベースが作成されていましたが、MySQL5.7.11では作成されなくなりました。

以下公式HPより抜粋
Installation creates no anonymous-user accounts.
Installation creates no test database.

———————————広告———————————

[googleadsense]

———————————広告———————————

コメント

タイトルとURLをコピーしました