MySQLが起動しなくなった！！

こんにちは！

今朝PHPの環境を構築していたところ、
**MySQLが起動しなくなった！！！**というトラブルが発生し、色々と調べて解決しましたので
その記録を残しておこうと思います

なんでもこの起動エラー、皆様にも発生する可能性が十分にあり得ますので
発生しても焦らないでくださいね

## 発生エラー

```
% mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)
```

mysqlに接続できなくなりました。
'/tmp/mysql.sock'を通じてローカルmysqlサーバーに接続できなかったよ
という日本語訳になります。

## 環境

- homebrewインストール済み
- macOS Big Sur ver.11.2.3


ネットで様々調べていると、ここでいきなり解決に走る記事が多いですが、
**念の為現状を確認をしておきましょう**
確認なので、エラーが出て当然です

## 現状確認

```
% sudo mysql.server restart # 再起動してみる
ERROR! MySQL server PID file could not be found!
Starting MySQL.... ERROR! The server quit without updating PID file (/usr/local/var/mysql/itoutakahironoMacBook-Pro.local.pid).
```

```
% ps aux | grep mysql   # mysqlが動いているか確認する（プロセスの確認）
zsh: bus error  ps aux | 
zsh: exit 1     grep mysql
```

```
% brew doctor  # brewの一般的な問題をチェック

Warning: Some installed formulae are deprecated or disabled.
You should find replacements for the following formulae:
  ilmbase
  mysql@5.6

Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and which additional flags to use when
compiling and linking.

Warning: You have unlinked kegs in your Cellar.
Leaving kegs unlinked can lead to build-trouble and cause formulae that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
  imath
  openexr

Warning: Broken symlinks were found. Remove them with `brew cleanup`:
  /usr/local/share/man/man5/package-locks.5
  /usr/local/share/man/man5/shrinkwrap-json.5
```

一旦、記憶も整理しておきましょう

```
# 何か設定を変更した記憶はあるか　→ ない
# アップグレードした記憶はあるか　→ 今朝PHPのインストールをした際に動いてしまったかも…
```

大事なことは、**自分で何か触った記憶はあるか**という点だけにしておきます笑

色々と設定をイジる解決方法が見つかりますが、そもそも触ってないんだからここは間違ってないのでは？？
という私の見解です

では、MySQLをもう一度見ていきます

```
# mySQLのバージョンを確認する
% cd /tmp/
% brew list | grep mysql
mysql@5.6　  # 私のはver.5.6という事ですね
```

mySQLをアンインストールして、再度インストールしてみる

```
 % brew uninstall mysql
Error: No available formula or cask with the name "mysql".
```
できませんね…

```
# brewをclean upする
% brew cleanup
Removing: /usr/local/Cellar/glib/2.66.7... (441 files, 20.8MB)
Warning: Skipping heroku/brew/heroku: most recent version 7.53.1 not installed
Removing: /Users/takahiro/Library/Caches/Homebrew/heroku--7.52.0.tar.xz... (7.2MB)
Removing: /usr/local/Cellar/python@3.9/3.9.2_1... (3,942 files, 66MB)
Warning: Skipping ruby-build: most recent version 20210510 not installed
Removing: /Users/takahiro/Library/Caches/Homebrew/ruby-build--20210423... (54.6KB)
Pruned 2 symbolic links and 12 directories from /usr/local
```
なんだか良い影響をもたらしたような気がしません


## 解決していく

では、brew doctorのおっしゃる通り

```
Some installed formulae are deprecated or disabled.
You should find replacements for the following formulae:
  ilmbase
  mysql@5.6
```
「下のやつが非推奨か無効になってるから、代わりのもの持ってこいよ」　という意味ですね
ここを対処しましょう

```
# mysql@5.6をもう一回インストールする
% brew install mysql56
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
Updated 4 formulae.
```

うまく通りました。
インストールというより、アップデートですね

```
# このmysql@5.6を起動してみる
% brew services start mysql@5.6
Service `mysql@5.6` already started, use `brew services restart mysql@5.6` to restart.
```

ん？もう起動されてる？　一応再起動しておきます

```
% brew services restart mysql@5.6
Stopping `mysql@5.6`... (might take a while)
==> Successfully stopped `mysql@5.6` (label: homebrew.mxcl.mysql@5.6)
==> Successfully started `mysql@5.6` (label: homebrew.mxcl.mysql@5.6)
```

動いてる！！

```
% sudo mysql.server start
Starting MySQL
. SUCCESS! 
```

動いてる！！

というわけで、解決いたしました。

ネットには、
- sockを自分で生成する
- pidを自分で生成する
という解決方法が多数出てきますが、これでも不具合は起きてしまう事があるそうです

**私は**再インストールで治りました
でも皆さんは違うかもしれません

皆様も
ネットの記事をそのまま実行せず
状況把握もしっかりと行いましょうね