【MAMP(サーバ)が起動しない】※Startを押しても緑色ではなく、黄色に変化する現象について

## はじめに
こちらの記事は、サーバを起動しようとMAMPのStartボタンを押した際、
(Stopボタンが)黄色に変化し上手く起動しない問題に悩まされている方向けの内容です。
(正常に起動した場合はボタンが緑色に変化し、WebStartボタンが押せる状態になります。)
黄色に変化しサーバが正常に起動しない原因はいくつかあると思いますが、
googleで検索したいくつかの記事通り手順を行っても、なかなか解決できなかったので
同じように解決できていない方がもしいたら、是非参考にしていただきたいです。

## 本記事の対象者
・MAMPが上手く起動しない(既にインストール済みで、前までは正常に起動できていた)
・これまでに、何かしらの形でMySQL(DB)に接続した事がある
・最近PHPのバージョンをアップした
・使用しているポート番号を把握できていない
※上記の内容にいくつか該当する方は、この記事を見る価値はありそうです。

## 開発環境(解決前)
・macOS Monterey(バージョン12.4)
・PHP 8.1.8
・MAMP & MAMP PRO 6.6(Intel)
・MySQL 5.7

## 開発環境(解決後)
・macOS Monterey(バージョン12.4)
・PHP 8.1.8
・MAMP & MAMP PRO 6.6(Intel)
<font color="Red">・MySQL 8.0</font> 
※バージョンアップしただけでは、上記の問題が解決しない事があります。

## 「MAMPのStopボタンが黄色に変化する」とは？
具体的には以下のような状態です。
![20220724-001210.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/7a1662bc-6a61-b4a7-3963-7e85f646dd5c.png)

## 起きている事象
開発環境(解決後)を見られた方は、お気づきになったかもしれないですが
起きている事象の詳細は、「<font color="Red">**MySQL(DBサーバ)**</font>が正常に起動できない」
と言う事でした。

## 原因
上記の現象が起きている原因としては、あくまで推測になってしまうのですが
以下の点が考えられます。
・以前MySQLを使用した際に、正常に停止がされていなかったまま、
　　MAMPのバージョンを上げてしまった。
・前のバージョンで、今回使用するポート番号に接続しそれに気づかずに
　　MySQLのバージョンを上げようとしてしまった(古いバージョンのアンインストール)
・過去に修正したファイル(htdocs配下)が、何かしらの影響をもたらしてしまっている

...ピンポイントの原因の切り分けが出来ておらず申し訳ありませんが、
考えられる点は以上です。

## 解決策(流れ)
以下の手順に従う事で、恐らく解決できます。
(恐らくと言うのは、試行錯誤しながら解決した事から時系列的に正しさを証明できないため)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
● 使いたいポート番号を既に使用しているサーバを検索(コマンドでgrep)し接続を切断
↓
● home brewの最新化
↓
● home brewでインストール可能なMySQLのバージョン確認
↓
● MySQLのインストールを実行
↓
● インストールしたMySQLのバージョン確認
↓
● MySQLを起動

## 解決策(詳細)
#### 使いたいポート番号を既に使用しているサーバを検索(grep)し、接続を切断
```
# mysql関係の動いているプロセスを確認
ps aux | grep mysql

# 表示例(上記のコマンド実行時)
11292   ??  S  3:36AM 0:28.70 /usr/local/opt/mysql/bin/mysqld --
  400   ??  S     3:36AM   0:00.05 /bin/sh /usr/local/opt/mysql/bin
  896 s000  S+   11:59PM   0:00.01 grep mysql

# grep以外のプロセスをkillする(※ grep mysql以外)
・上記の場合だと、以下のコマンドを実行
sudo kill -TERM 11292
sudo kill -TERM 400

# 接続できるか確認する
mysql -uroot
```

#### home brewの最新化
```
# Homebrewと、インストールしているすべてのformulaをアップデート
(※「Already up-to-date.」表示されれば、最新バージョン)
brew update
brew upgrade

# 特定のformulaだけアップデートする方法(例：mysql)
brew upgrade mysql

# MySQLをアップデートした時には、MySQL テーブルのチェックとアップグレード
mysql_upgrade -u root -p
```
#### home brewでインストール可能なMySQLのバージョン確認
```
brew info mysql

# 次のような表示が返ってくる
mysql: stable 8.0.11 (bottled)...
```
#### MySQLのインストールを実行
```
brew install mysql
```
#### インストールしたMySQLのバージョン確認
```
mysql --version

※ この時に、古いバージョンが表示されたら、MySQLのアンインストールをご検討ください。
　もし実行する場合、必要なデータのバックアップなどを行ってからにしましょう。
　重要なデータがないと言う方は、迷わずアンインストールしてMySQLを
　インストールし直してみて下さい。
```
#### MySQLを起動
```
mysql.server start

# 以下の表示がされれば、成功です！
Starting MySQL
. SUCCESS!

※ ひとつ前のコマンドで古いバージョンが出た際に、アンインストールの対応をしたのにも
　　　関わらず、バージョン確認のコマンでバージョンが古いままで、尚且つ以下のようなエラーが返ってき場合、、、
```
・エラー内容
```
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/*****.local.pid).
```
その場合は、ひとつ前の「バージョンを確認するコマンド」で出力された
 古いバージョンを明示的に指定し、アンインストールする必要があります。
 具体的には以下のコマンドです。
※私の場合は、これが決めてで解決に至りました!!
```
# 例：MySQLの古いバージョンが5.7の場合
brew uninstall mysql@5.7
```
私自身もバージョン確認をした際に、新しいバージョンのMySQLをインストールしても
延々と古いバージョンが表示されたので、上記の「明示的」にバージョンを指定して
アンインストールするコマンドを実行しました。
すると、それ以降「MySQLのバージョン確認」のコマンドを実行しても、古いバージョンが
表示される事は無くなりました！
その際に、もし何もバージョンが表示されずエラーが返ってくるようなら、そのタイミングで
また最新のMySQLをインストールして、バージョン確認のコマンドを叩いて見てください！

#### MAMPの確認
上記の内容(mysql.server startコマンドで正常に起動)がクリアできれば、
MAMPのStartボタンを押した際に、今度こそ以下のように緑色に変わるはずです！
また、これでも上手くいかないと言う方は、一度MAMPの最新化も試して見てください！
![20220725-010155.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659821/076661ee-0e04-810b-f1cb-d719d6fbb631.png)
## まとめ
今回、MAMPを起動するにあたり、なかなかしんどいエラーに遭遇しましたが、
同じようなエラーで悩んでいる人にとって、この記事が少しでも解決のきっかけや
ヒントになってもらえたら幸いです。
まだまだ勉強不足ですが、ひとつひとつのエラーと向き合い解決していく事で、
愚直にエンジニアとしてのスキルや知識、自己解決能力を養えたらと思います。
最後までお読みいただきありがとうございました。
## 参考
・https://e-joint.jp/639/
・https://blog.proglus.jp/35/
・https://blog.proglus.jp/783/
・https://zenn.dev/ogakuzuko/articles/1d9d20fb5cbef8
・https://blog.proglus.jp/1077/#4