有効な無駄知識を…?

ITや情報系のネタ中心に書いていくつもりですが…。時々思い出したように更新。

XAMPPのデータベースをMySQLに置き換える

2017-07-12 14:09:09 | 情報系ネタ

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へ置き換えるにあたり、幾つか制限があります。

  1. XAMPPの最新版(2017-5-12時点 7.1.4)のみ、動作することを確認しています。
  2. ログが既定の場所に出力されません(回避方法あり)。
  3. MySQLのサービス登録は試していません。
  4. その他、私が認識していない問題がある可能性があります。

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からログを開くことができます。



最新の画像もっと見る

コメントを投稿