発生状況
ZIP版は以下のような手順でインストールします。- MySQLのサイトからWindowsバイナリのZIP版をダウンロードし解凍し今回は D:\mysql に置いたとします。
- システム環境変数のPathに D:\mysql\bin を追加します。
- my.ini を適切に記述し、データディレクトリのフォルダなどを適切に配置します。
(サックリ1行で書いてますけど本当はここが一番神経使うんですよね。キリがないので今回は省略します。) - コマンドプロンプトで「mysqld --install MySQL5」と実行してサービスをインストールします。
「MySQL5」は任意のサービス名です。以下の文章中の「MySQL5」はすべてここで指定したサービス名に置き換えて読んでください。
また、my.iniファイルを通常と別の場所に置く場合は「--defaults-file=~」のオプションの指定も必要ですが、ここでは「D:\mysql\my.ini」に置くことを前提として省略しています。
ここの省略をする/しないによって今回の問題が変わることはありません。 - 「Service successfully installed.」と出たらサービスのインストールは成功です。
- コマンドプロンプトで「net start MySQL5」と実行してサービスを起動してみます。
エラー発生
「システム エラー2 が発生しました。指定されたファイルが見つかりません。」おっと。
トラブルシュート
きっとmy.iniの設定ミスです。・・・って指定したフォルダも全部作ってあるし、データディレクトリにデータもコピーしてあるし。そんなときはMySQLのエラーログです。・・・ってmy.ini をきれいに設定してもmysqlのエラーログが作られません。
よし、そんな時はOSのイベントログ・・・ほら出てる!どれどれ?
「MySQL5 サービスを、次のエラーが原因で開始できませんでした:指定されたファイルが見つかりません。」
・・・と、詳細を見てもなんのファイルが見つからないのかわかりません。
ぐるぐると苦しんだあと、インストールされたサービスのプロパティを見てみると、「実行ファイルのパス」が
"C:\Program Files\MySQL\MySQL Server 5.5\mysqld" MySQL5
になってました。なんでダヨ・・・
原因
どうやらシステム環境変数のPathが通ってるからと言って何も考えずに「mysqld --install [サービス名]」
してしまうと勝手にMySQLが決めたデフォルトの値が使われるようです。
MSI版じゃなくても!
対処方法
サービスはとりあえずアンインストールします。「mysqld --remove MySQL5」
(「sc delete MySQL5」とやっても削除できますが、「--remove」の方が安全です。)
「Service successfully removed.」と出たら正しくアンインストールされたので
「CD /D D:\mysql\bin」してから
もう一度「mysqld --install MySQL5」します。
それだけです!
余談
「環境変数のPathへの追加」は設定しないでもMySQLを使うことが可能です。ただ追加しないと相当不便なのは知っていたので「どうせあとから必要になるから」と思って先に環境変数のPathに追加してしまった結果、落とし穴にはまったわけですね。
おまけ ドライブレターの話
コマンドプロンプトの表示上で、「d:\mysql\bin>」とドライブレターが小文字になっている状態で上記コマンドでサービスをインストールすると、
「実行ファイルのパス」も「d:\mysql\bin MySQL5」となってしまいどうにも気持ちが悪いので、
「D:\mysql\bin」とドライブレターが大文字になっている状態でインストールしましょう。
ZIP版のMySQLのサービス化で困っており
返信削除非常に助かりました。
ありがとうございます。
コメントありがとうございます。
削除お役に立てて光栄です。
貴重な情報、ありがとうございました。。(_ _;)
返信削除この情報を探し当てるまで試行錯誤2日間を無駄に過ごしてしまいました。
私のところは、以下のexe名でサービス登録されてました。
mysqld-sharewere.exe ってなんダヨ...orz
コメントありがとうございます。お役に立てて光栄です。
削除「mysqld-sharewere.exe」で検索してもかなーーり古い情報しか出てこないですね。なんでしょう??
助かりました。「どうせあとから必要になるから」と思って…っく
返信削除