XAMPPのMariaDBをWindowsのサービスに登録して、MariaDBを自動で終了させる
XAMPPを使っていると、mysql.dbがよく壊れることがある。
これはどうやら、mysqlを停止せずにWindowsを終了させることで起こるみたい。
そこで、Windowsのサービスに登録したら、Windowsはシステムの終了時に
サービスを終了させてくれる(にちがいない 笑)
追記 (2024.04.03)
下に書いている方法ではなく、XAMPPコントロールパネルのボタンをクリックすることで、
簡単に service に登録できることがわかった。(^_^;

このパネルの左の “Modules Service” の ☓印 をクリックすることで、以下のようにサービスに登録できた。

ただ、C:\xampp\mysql\installservice.bat の中の 「C:\xampp\mysql\bin\mysqld」のままで
うまくいくかどうかは、やってみないとわからない。
下に書いているように、「C:\xampp\mysql\bin\mysqld.exe」とする必要があるかもしれないし、
必要ないかもしれない。
以前に記述した内容
MariaDBをサービスに追加する手順
(1) 管理者権限でコマンドプロンプトを立ち上げる。
(2) > cd c:\xampp\mysql
(3) > mysql_installservice.bat
これでサービスに登録され、Windowsの起動時に自動的に MariaDB が動作する。
サービスから削除したいときは、
mysql_uninstallservice.bat を実行すればよい。
XAMPPコントロールパネルを見てみる
XAMPPコントロールパネルがすでに起動している場合は、”Quit” として
いったん終了させ、コントロールパネルを起動しなおす。
MySQLが起動しているはずである。
このコントロールパネルから制御できるのは変わらない。
なにやらエラーが・・・
ぼくの場合、次のようなエラーが出ていた。
MySQL Service detected with wrong path
Change XAMPP MySQL and Control Panel settings or
Uninstall/disable the other service manually first
Found Path: C:\xampp\mysql\bin\mysqld --defaults-file=C:\xampp\mysql\bin\my.ini mysql
Expected Path: c:\xampp\mysql\bin\mysqld.exe --defaults-file=c:\xampp\mysql\bin\my.ini mysql
Problem detected!
Port 3306 in use by "C:\xampp\mysql\bin\mysqld --defaults-file=C:\xampp\mysql\bin\my.ini mysql"!
MySQL WILL NOT start without the configured ports free!
You need to uninstall/disable/reconfigure the blocking application
or reconfigure MySQL and the Control Panel to listen on a different port
(グーグル翻訳)
MySQL サービスが間違ったパスで検出されました
XAMPP MySQL とコントロール パネルの設定を変更するか、
最初に他のサービスを手動でアンインストール/無効化します
見つかったパス: C:\xampp\mysql\bin\mysqld --defaults-file=C:\xampp\mysql\bin\my.ini mysql
予期されるパス: c:\xampp\mysql\bin\mysqld.exe --defaults-file=c:\xampp\mysql\bin\my.ini mysql
問題が検出されました!
ポート 3306 は「C:\xampp\mysql\bin\mysqld --defaults-file=C:\xampp\mysql\bin\my.ini mysql」によって使用されています。
MySQL は、設定されたポートが解放されないと起動しません。
ブロックしているアプリケーションをアンインストール/無効化/再設定する必要があります
または、別のポートでリッスンするように MySQL とコントロール パネルを再構成します。
“MySQL Service detected with wrong path xampp” で検索してみると、以下の
サイトが見つかった。
XAMPPの環境設定でFound Path: ” ” -k runservice Expected Path: ” ” -k runservice とエラーが出た時の対処法
このページでは、以下の対処で解決できたとあるが・・・
(1) 管理者権限でコマンドプロンプトを起動
(2) c:\Windows\System32> sc delete MySQL
[SC] DeleteService SUCCESS
これを実行してみたら、サービスからmysqlを削除することができたが、
それだけのことで、上記のエラーは消えなかった。
レジストリを編集したらエラー解消
上記のページで紹介されているページを見てみた。
Apache Service detected with wrong path
ここに以下のようなことが書かれていた。
I just encountered the exact same problem a few days ago and was having a hard time finding the fix, but I finally able to fix it.
Here's my fix:
1. Win + R and type regedit then enter
3. Open this directory HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4
3. Right-click on the "ImagePath" and choose "Modify"
4. Change the Value Data field with your current installed path of apache in XAMPP
5. In my case, the value is "D:\apps\xampp\apache\bin\httpd.exe" -k runservice
6. For the question poster case, change the value to "C:\xampp\apache\bin\httpd.exe" -k runservice
I know it's an old post, but some people might still need this in the future. I hope it can help :)
(1) "Win + R" で regedit と入力し、レジストリエディタを起動する。
(2) "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql" を開く。
(3) "ImagePath" をダブルクリックして編集する。
(4) エラーに出ていた "Expected Path" の値にする。
ぼくの場合は、以下のように出ていた。
Found Path: C:\xampp\mysql\bin\mysqld --defaults-file=C:\xampp\mysql\bin\my.ini mysql
Expected Path: c:\xampp\mysql\bin\mysqld.exe --defaults-file=c:\xampp\mysql\bin\my.ini mysql
ちがっているのは、”mysqld” と “mysqld.exe” なので、
レジストリの”ImagePath”の値を “mysqld.exe” にした。(.exeを追加しただけ)
これで、コントロールパネルに表示されていたエラーは消えた。
レジストリを編集しなくても、これでいいのでは!?
上記では、レジストリを編集したが、以下のファイルを修正することで、レジストリをさわらなくても、うまくいくはず。
C:\xampp\mysql\mysql_installservice.bat
28 :MainNT
29 echo Installing MySQL as an Service
30 copy "%cd%\bin\my.cnf" /-y %windir%\my.ini
31 bin\mysqld --install mysql --defaults-file="%cd%\bin\my.ini"
32 echo Try to start the MySQL deamon as service ...
33 net start MySQL
これの 31行目の “bin\mysqld” を “bin\mysqld.exe” に変更すればよい。
そして、この mysql_installservice.bat を管理者権限で実行すれば、エラーは出ない。
ここで注意。
mysql_installservice.bat を管理者権限で実行するには、以下の手順でおこなう必要がある。
- コマンドプロンプトを管理者権限で起動する。
- > cd C:\xampp\mysql <RETURN>
- > mysql_installservice.bat <RETURN>
C:\xampp\mysql フォルダの mysql_installservice.bat を右クリックして ”管理者権限で実行” とすると、うまくいかない。
ちなみに、同じフォルダにある “mysql-uninstallservice.bat”は、
14 bin\mysqld.exe --remove mysql
となっていたので、こちらは編集しなくても大丈夫。
要するに、Windowsは、拡張子に”.exe”がついている実行ファイルをサービスに登録しているってことね。
カテゴリー: mariadb, memo, mysql, XAMPP
タグ: auto stop, mariadb, mysql, service, xampp, サービス, 自動停止
カウント: 206