MySQL5.7 ソースインストール

前回はApacheのソースインストールでしたが、今回はMySQL(5.7.17)です。
やってみると存外Apacheインストール時以外の気づきもあった為、書き記します。

前回と同様、トライアル&エラーで進めます。
手っ取り早くやりたい方は本記事の下のほうの「エラー無しでやる方法」をご覧下さい。

いつも通りソースファイルをダウンロード・解凍します。

Apacheの時と同じ調子でconfigureしようとしたらそんなファイルは無いと言われてしまいました。恥ずかしい…。

今回の場合はcmakeというビルドツールを使用します。
cmakeをインストールしましょう。

カレントディレクトリを表す「.」を加えてcmake。

するとCコンパイラ(gcc)とC++コンパイラ(gcc-c++)が見つからないというエラーが出ました。

Cコンパイラ(gcc)とC++コンパイラ(gcc-c++)をインストールし、再度cmakeを実行。

次は下記エラーが発生します。

Boost(C++のライブラリ)をインストールして下さい、とのこと。
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=<ディレクトリ>でディレクトリを指定可能。
ディレクトリ内にBoostがあるか探し、無ければダウンロードして(指定したディレクトリに)解凍してくれるとのこと。

今回はBoostを/usr/local/src 内にインストールするものとしてcmakeを実行します。
この場合「.」が要りません。

cmakeはオプション無しだとUsage(使用方法)を表示してくれるので、その場合と区別する為に「.」が必要なのかも知れません
下記のようにオプションを指定した場合であればUsageを表示したいのではなくcmakeを実行したいことが明白なので、カレントディレクトリが補完されるのかも知れません

またもエラーが。
CMakeCache.txtを消してncurses-devel(Debian/Ubuntuならlibncurses5-dev)をインストールして下さい、とのこと。
言われた通りにやってみます。

再々度cmakeする際、BOOSTはインストール済みなので下記のように指定してあげます。

cmakeで問題が無ければコンパイル(make)。

メモリが足りない(メモリを使い果たした)と言われてしまいました。

今回インストールしている環境はAWS EC2のt2.micro。
メモリは1GB積んでいますがこれでは足りないようです。
インスタンスサイズを上げるとお金が掛かるのでSWAPを作成してケチります。

SWAPでメモリ枯渇対策が終わったら再度コンパイル(make)します。
SWAP使用が発生するので時間が掛かります。

するとまさかのディスク容量が足りないとのエラーが。

t2.microでデフォルトのルートボリュームは8GB。これも足りなかったようです。
取得したAMIからルートボリューム30GBのインスタンスを起動し、やり直し。

無事コンパイルが終了しました。
後はインストール(make install)。

インストールが完了したら、mysqlユーザを作成しておきます。

起動スクリプトをコピーで作成し、起動します。

すると下記エラーが発生しました。

このエラーを解消するのにかなり時間がかかりました…。
ネットで検索すると色々出てきますが、私は下記方法で解決(?)しました。

起動スクリプトに datadir=/usr/local/mysql/data の記述が。
これに従いデータベース初期化(install_db)を実施します。

mysqlを起動、起動できたら自動起動設定を追加。

プロセス起動できたのでMySQLにログインします。
/root/.mysql_secretに初期パスワードが記載されています。

ソースで入れるとMySQLクライアントもインストールされているようです。
これも知りませんでした。

ログイン後、最初はコマンドを使用することができません。
rootユーザに新たにパスワードを設定する必要があります。

パスワードを設定して、flushしておきます。

これでMySQLコマンドが使用できるようになりました!

■エラー無しでやる方法

・充分なディスクを積んだサーバを用意する
※筆者の場合はルートボリューム30GBでOKでした

・SWAP作成(もしくは充分なメモリを積んだサーバを用意する)

・各種インストール(cmake, Cコンパイラ, C++コンパイラ, Cursesライブラリ)

・ソースファイルのダウンロード、解凍

・cmake、コンパイル、インストール

・ユーザ作成

・データベース初期化

・起動スクリプト作成、起動

・自動起動設定

・MySQLの初期パスワードの確認

・MySQLログイン

・MySQLパスワード設定

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.