はじめに
「気づけばプロ並みPHP」という書籍で学習中にXAMPPで環境を用意する必要があり、その際に書籍通りに操作したところapacheなどは起動することができたのですが、MySQLは起動しなかったのでその原因と解決についてまとめました。
【環境】
MacOS
xampp 7.2.3
結論
原因
もともと入れていたMySQLがずっと動いていて、
かつ自動で再起動していたため、
xamppで使うport番号と被ってしまっていたことが原因でした。
解決策
ポート番号が使用されているかを確認
$ sudo lsof -i:3306
利用されていた場合そのプロセスをkillする
$ sudo kill -9 <PID>
自動で再起動になっている場合はそれも止める
$ brew services stop mysql
概要
冒頭の説明のままですが、MySQLを選択しstartをクリックしても緑色のランプにならなかったため、
configureからエラーログを確認しようとしたところ、特に何も表示されていなかったため、さらにネットで調べ以下のコマンドでエラーログを確認できました。
root/Applications/XAMPP/にて
$ sudo tail xamppfiles/var/mysql/<自身のPC名>.err
実際のログ
2024-03-18 16:47:04 0 [ERROR] Can't start server: Bind on TCP/IP port. Got error: 48: Address already in use
2024-03-18 16:47:04 0 [ERROR] Do you already have another mysqld server running on port: 3306 ?
2024-03-18 16:47:04 0 [ERROR] Aborting
最後の3行のみで抜粋するとこんな感じのログが出ていました。
bindしようとしたけど、すでにそのアドレスが使われていた。
もしかしてすでに別のmysqlが3306のポートを使っていませんか?みたいなことが書かれているっぽいです(英語力皆無)
実際にポート3306が使用されているか確認するために
$ sudo lsof -i:3306
を実行。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 63931 _mysql 49u IPv6 0xbc925f70d094c8d 0t0 TCP *:mysql (LISTEN)
確かに存在したため、このプロセスを下記のコマンドで落とす
利用されていた場合そのプロセスをkillする
$ sudo kill -9 <PID>
自分の場合はhomebrewでmysqlを入れていたので
下記のコマンドで自動起動ごとmysqlを停止させました。
自動で再起動になっている場合はそれも止める
$ brew services stop mysql
最後にもう一度
$ sudo lsof -i:3306
を実行して何も表示されなければポート3306を利用されていないということなので大丈夫だと思います。
改めて実行
できました。
まとめ
自分自身、以前Railsなどで利用した際に入れたmysqlがずっと起動しっぱなしなことが今回のエラーの原因でした。
参考になれば幸いです。
参考リンク