misc.log

日常茶飯事とお仕事と

MySQLを後からWindowsサービスとして登録する

社内で少し話題に挙がったので同じ事やらないようにメモ。

背景: サービスとして登録せずにMySQLをインストール

Windows用のMySQLを単体でインストールしたのですが、インストール時にWindows Serviceとして登録しないという選択をしてしまったので、あとからサービスとして登録することになりました。多分インストーラーを再実行とかでもいけたかもしれませんが……。

基礎からのMySQL 第3版 (基礎からシリーズ)

基礎からのMySQL 第3版 (基礎からシリーズ)

MySQLをサービスとして登録する

Windowsサービスはいわば「常駐プログラム」のようなもの、Windowsが起動すれば、別にログインしていなくても背後で動き続けるようなアプリケーションです。MySQLをこのモードで動かすには、どうやら「mysqld.exe」というプログラムをWindowsにサービスとして登録する必要があるようです。

Windowsサービスとして動かすように特別な手順や仕掛けを施して作られたアプリだけが、WindowsサービスとしてOSに登録出来ますが、登録に際しては

  • プログラム本体の所在
  • サービスとして登録する名称(まぁ見た目上の名前ですので何でもいいです)
  • 登録やサービス起動に必要な設定ファイルなどの情報

が必要で、それらを以下のような命令で、管理者モードで起動したコマンドプロンプトから実行する必要があります。

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --install MYSQL --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"

それぞれ内訳は以下の通りです。

  • "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" …… サービスとして動くプログラム本体。フルパスで指定しないといけないようです。パスの中に空白が入っているので、ダブルクォーテーションで囲っています。
  • --install MYSQL …… Windowsサービスとして登録する、という命令と、「MYSQL」がサービスの名称です。名称は別に何でも構いませんが、既に登録されている名称は使えません(エラーになります)。
  • --defaults-file="~\my.ini" …… 起動時に読み込む設定ファイル名を指定します。

MySQLのサービス登録を解除する

サービスとして登録したmysqld.exeを登録解除するには下記のコマンドを利用します。

mysqld.exe --remove MYSQL

「--remove」が解除の命令、その後ろが解除対象を特定する名称で、サービスを登録する際に指定した名称を指定してください。

公式情報

本件に関する公式情報は下記の場所にあります。 dev.mysql.com

実践ハイパフォーマンスMySQL 第3版

実践ハイパフォーマンスMySQL 第3版