XAMPPのデータベースをMySQLに置き換える
はじめに
本稿では、XAMPPの最新版(2017-5-12時点 7.1.4)で、データベースをMariaDBからMySQLに置き換える方法について記します。
PHPの開発では、ApacheやPHPをひとまとめにしたXAMPPを利用することがあります。XAMPPにはウェブサーバ、データベースなども同梱されています。
XAMPP -1.8.3/5.6.3-5.6.12ではMySQLが、XAMPP 5.5.33-5.5.38/5.6.14-ではMariaDBが採用されています。 そのため、XAMPPの最新版ではMySQLを利用することができません。
ここでは、MySQLの最新機能を利用するため、MariaDBをMySQLへ置き換えることを考えます。
制限事項
MariaDBをMySQLへ置き換えるにあたり、幾つか制限があります。
- XAMPPの最新版(2017-5-12時点 7.1.4)のみ、動作することを確認しています。
- ログが既定の場所に出力されません(回避方法あり)。
- MySQLのサービス登録は試していません。
- その他、私が認識していない問題がある可能性があります。
MySQLのダウンロード
MySQLのウェブページ("https://dev.mysql.com/downloads/mysql/")から、MySQLの最新版をダウンロードします(今回は、5.7.18をダウンロードします)。

インストーラ付き、32bit/64bitなど複数のファイルがダウンロードできますが、「Windows (x86, 32-bit), ZIP Archive」をダウンロードします(64bitは、XAMPPコントロールパネルからMySQLをシャットダウンできません)。
MariaDBの待避
今までのMariaDBのファイルを移動することで退避します。
これからの操作では、XAMPPのすべてのサービスを停止して下さい。
XAMPPをインストールしたフォルダに移動し、「mysql」というフォルダ名を「mysql_old」に変更します。

mysqlのコピー
ダウンロードしたMySQLの圧縮ファイル(mysql-*-win32.zip)を解凍します。

解凍したファイルはフォルダ(mysql-*-win32)ごと「【XAMPPインストール先】」移動し、フォルダ名を「mysql」に変更します。

データの移行
MariaDBのデータを、MySQLフォルダに移動します。移動対象は以下のファイル/フォルダです。(ファイル/フォルダ名が重複しないデータ全てです)
- data
- scripts
- COPYING.LESSER
- COPYING.thirdparty
- CREDITS
- EXCEPTION-CLIENT
- my-huge.ini
- my-innodb-heavy-4G.ini
- my-large.ini
- my-medium.ini
- my-small.ini
- mysql_installservice.bat
- mysql_uninstallservice.bat
- resetroot.bat
- wsrep.ini

設定・スクリプトの編集
設定ファイルについても、基本的にMariaDBのものをコピーして使用します。
「【XAMPPインストール先】\mysql_old\bin\my.ini」を、「【XAMPPインストール先】\mysql\bin\my.ini」へ上書きコピーします。

コピー後、「【XAMPPインストール先】\mysql\bin\my.ini」の設定を一部修正します。
「key_buffer」のコメント化
MySQLでは、key_bufferという設定項目は無い(廃止になった?)ため、「key_buffer = 16M」の先頭に#を付けてコメント化します。

「innodb_additional_mem_pool_size」のコメント化
MySQLでは、innodb_additional_mem_pool_sizeという設定項目は無い(廃止になった?)ため、「innodb_additional_mem_pool_size = 2M」の先頭に#を付けてコメント化します。

起動確認とデータ修正
以上の設定で、MySQLが起動できることを確認し、その後データの修正を行います。
起動確認
コマンドプロンプトを起動し、「【XAMPPインストール先】\mysql\bin\」へ移動します。
移動後、mysqldコマンドを実行します。実行には、以下の通り「--defaults-file="【XAMPPインストール先】\mysql\bin\my.ini"」「--console」のコマンドオプションを付けます。
> cd 【XAMPPインストール先】\mysql\bin\ > mysqld --defaults-file="【XAMPPインストール先】\mysql\bin\my.ini" --console

異常終了せず、実行中の状態になれば良好です。

データ修正
起動確認をしたまま(コマンドプロンプトを開いたまま)で、もう1つコマンドプロンプトを起動し、「【XAMPPインストール先】\mysql\bin\」へ移動します。
移動後、mysql_upgdateコマンドを実行します。実行には、以下の通り「-u root」「-p」のコマンドオプションを付けます。
> cd 【XAMPPインストール先】\mysql\bin\ > mysql_upgdate -u root -p
mysql_upgdateコマンドを実行すると、パスワードの問いかけ(Enter password:)が出てきますが、初期設定は"なし"になっています(そのままEnterキーを押下)。

整合性チェックが終了すれば完了です。

起動確認のMySQLについても、CtrlキーとCキーの同時押し(Ctrl+C)で終了させてください。

MySQLの起動
設定が完了したため、MySQLを起動します。
通常のXAMPPと同様に、XAMPP Control Panelから、「Start」ボタンを押下することで起動できます。

ウェブブラウザから。"http://localhost/phpmyadmin"に接続すると、画面右側に起動しているデータベースのバージョンが表示されます。記載内容が「MySQL Community Server」となっていれば、MySQLサーバに接続できています。

付録:ログの出力
今回の方法では、MySQLのログがファイルに保存されないため、XAMPP Control Panelからサーバログを確認することができません。ログを確認するには以下の2つの方法があります。
Windowsのイベントビューアー
MySQLのログは、Windowsのアプリケーションイベントに記録されています。そのため、イベントビューアーを起動し、Windowsログ→Applicationから内容を確認することができます。
ただし、他のアプリケーションのログも記録されるため、あまり見やすくはありません。

起動オプションを指定したバッチファイルからMySQLを起動する
MySQLもログ出力機能を持っていますが、コマンドオプション「--log-error="【ファイル名】"」で指定する必要があります。 しかし、XAMPPにおけるMySQLの起動オプションは「--console」となっており変更できません。
XAMPPにはXAMPP Control Panelを使用するほかに、バッチファイルからMySQLを起動することができます。そのバッチファイルにて、ログ出力先を指定することで、ログをファイルに出力することができます。
バッチファイルは【XAMPPインストール先】にあります。【XAMPPインストール先】をエクスプローラーで開き、バッチファイル「mysql_start.bat」を右クリックします。右クリックメニューから「編集」を選択しファイルの内容を以下の通りに書き換えます。
mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone --console
rem mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone --console mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --log-error="mysql_error.log" --standalone

編集が終わったら、ファイルを保存します。
MySQLの起動には「mysql_start.bat」を実行することで、ログをファイルに出力した状態で起動できます。起動したらコマンドプロンプトを閉じても、MySQLは起動したままとなります(「mysql_end.bat」で終了できます)。

バッチファイルから起動した場合でも、XAMPP Control Panelは起動中の表示に変わります。XAMPP Control PanelからMySQLを終了させることもできます。

この場合は、XAMPP Control Panelからログを開くことができます。


※コメント投稿者のブログIDはブログ作成者のみに通知されます