XAMPPを使用している際にMySQLが起動しない問題は、ポート競合が原因であることが多いです。MySQLがデフォルトで使用するポート3306が他のプロセスによって既に使用されている場合があります。この記事では、WindowsおよびMac (M1) 環境でのポート競合の診断と解決方法をステップバイステップで解説します。
1. 問題の確認
XAMPPコントロールパネルを開いた際に表示されるログから、MySQLがポート3306で起動できないことが示されています。これは、他のプロセスがポートを使用しているためです。
2. 競合するポートの診断
コマンドプロンプト/ターミナルの使用
Windows
-
管理者権限でコマンドプロンプトを開きます。
-
次のコマンドを使用して、どのプロセスがポート3306を使用しているかを確認します:
netstat -aon | findstr 3306
Mac (M1)
-
ターミナルを開きます。
-
次のコマンドを使用して、どのプロセスがポート3306を使用しているかを確認します:
sudo lsof -i :3306
プロセスの特定と終了
Windows
プロセスIDを使用して競合しているプロセスを特定し、終了させます:
おそらく管理者としてコマンドプロンプトを開かないといけません。
tasklist /fi "PID eq [PID]"
taskkill /PID [PID] /F
ここで、[PID]
はnetstat
から得られたプロセスIDに置き換えます。
Mac (M1)
プロセスIDを使用して競合しているプロセスを特定し、終了させます:
sudo kill -9 [PID]
ここで、[PID]
はlsof
から得られたプロセスIDに置き換えます。
3. 0.0.0.0:3306
の意味
0.0.0.0:3306
という設定は、MySQLサーバーがコンピュータのすべてのIPv4アドレスに対してポート3306で接続を待ち受けている状態を意味します。これにより、ローカルネットワーク内の任意のデバイスや、適切なネットワーク設定を通じて外部のデバイスからもアクセスが可能になります。
4. 競合の解決
競合しているプロセスが重要でない場合は、そのプロセスを終了させることができます。それが可能でない場合は、MySQLのポート番号を変更する必要があります。
MySQLのポート変更方法
- XAMPPのMySQL設定ファイル (
my.ini
またはmy.cnf
) を開きます。 - ポート番号を3306から別の番号(例えば3307)に変更します。
- XAMプコントロールパネ
ルを再起動して、変更を適用します。
5. セキュリティ考慮事項
外部からのアクセスを安全に管理するためには、適切なファイアウォールの設定が必要です。0.0.0.0
と[::]
のアドレスでリスニングする場合、特定のIPアドレスからのみアクセスを許可するようにファイアウォールを設定することをお勧めします。