備忘録として残します。
先日、MySQLを所用で使うことになったので、既にインストールしてあったバージョン8.0.25を起動しようと試みた。
すると、こんなエラーが出た。
某先輩が一瞥して「サービスが動いてるのが原因かもしれないねぇ」と言った。
なんとなく勘でここが怪しそうかな~と思った。
「Can't start server: Bind on TCP/IP port: 通常、各ソケットアドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか1つのみを使用できます。」
##やったこと
1.バージョンが違うのがいけないのかと思ってMySQL8.0.25から8.0.26にアップグレード
2.パッケージの数が足りないのかと思ってServer,J,Shell以外をMySQL Installerでインストール
3.mysqld --initializeを実行
結局これらをやっても解決しなかった。
##その後
そこで、検索してみたらこんなのが出てきた。
XAMPP MySQL Start エラー
BAがついた記事では3306番ポートをすでに他のプログラムが使用しており、終了するしかなかったからこうなっていると回答されていた。
そこで、特定のポート番号を使用しているプロセスを見つけ、終了する方法
を参考にして3306番を使っているプロセスを見つけてみた。
C:\WINDOWS\system32>netstat -ano | find "3306"
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 13316
TCP 0.0.0.0:33060 0.0.0.0:0 LISTENING 13316
TCP [::]:3306 [::]:0 LISTENING 13316
TCP [::]:33060 [::]:0 LISTENING 13316
全部PIDが13316番だった。
そこで、tasklist - プロセス一覧表示
を参考に、PIDが13316番のプロセスを割り出す。
C:\WINDOWS\system32>tasklist /fi "PID eq 13316"
イメージ名 PID セッション名 セッション# メモリ使用量
========================= ======== ================ =========== ============
mysqld.exe 13316 Services 0 32,248 K
ここから分かる通り、mysqldを起動しようとしてmysqldが障害になっていたのである。
##なぜ起こったか?
これはmysqlの起動設定を自動にしていたため起こったことである。
つまりログイン時に自動起動しないように設定してやれば解決する。
サービスからMySQL80を選択し、スタートアップの種類を手動に変更。
その後停止ボタンからサービスを停止する。
証明書などでエラーは出ているが、正常に稼働するようになった。
##そもそも...
こんなことになった根本的な原因はインストール時に
Start the MySQL Server at System Startup
にチェックが入っていたためである。
参考:MySQLをWindowsサービスに登録する
##教訓
設定は読み飛ばさずにちゃんと読んでインストールしよう。
日本語インストラクションやチュートリアルを調べてやってみても良い。
本来はまらないはずのところで時間を無駄に食うことになるから。