MySQLが起動できない エラー備忘ログ　その１

#背景
phpの学習中にmysqlをいじっていましたw
急にmysqlが起動できなくなり、エラー解消にほぼ半日躓いてしまったので、
その解決策と試したことを記事としてのせたいと思う！！
#mysqlでのエラー文との遭遇
###エラー内容一覧
###mysqlを起動を確かめる
```
 mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/ユーザーMBP.pid).

```
意味はpidファイルを更新せずに終わったよ！ってエラー?
すいません、、、意味がわかりません（涙）

##pidファイルとは?
Pidファイルには、特定のプログラムのプロセスID（番号）が含まれています。たとえば、Apache HTTPDはメインプロセス番号をpidファイル（通常のテキストファイル、それ以上のもの）に書き込み、後でそこに含まれる情報を使用して停止します。 cat filename.pid | xargs killを使用して、その情報を使用して自分でプロセスを強制終了することもできるみたいです。

#ググって試したこと！
##①権限関係
権限確認すると「_mysql:_mysql」だったので、自分:adminに変更した。

```
chown -R [ユーザ名] /usr/local/var/mysql
```
うまくいかず。

##②エラーログ確認しにいく
```
cd /usr/local/var/mysql
ls （lsコマンドでmysqlディレクトリの中身を確認する）
その中に
（ユーザー）MBP.err	というファイルがあるので
cat （ユーザー）MBP.err (catコマンドでファイルの中身を確認)

エラーログの中身に

2020-03-16 17:32:04 25993 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
```

調べてみると、インストール時に mysql_install_db が実行されるが、ディレクトリがわからない状態らしい。
インストール場所とユーザ名を指定して明示的に実行すると良さそうらしいですが、、

```
mysql_install_db --datadir=/var/lib/mysql --user=mysql
```
うまくいかず...
参考ページ
https://qiita.com/840_/items/06f32fecbe57c3fdf5ec

##③最終手段　全てをアンイストール！！
よく見るとmysql、mysql＠５.６、mysql＠５.７やらいっぱいmysqlが存在してしまっていたので全てアンインストール！

の前に
＊実行前に
そのまま解決手順を実行してしまうと、mysqlのデータが削除されてしまいます。
以下の手順を実行し、バックアップを行ってください！！

```
$ brew services stop mysql 
 mysqlを一旦停止
$ cp -pr /usr/local/Cellar/mysql /適当な場所/mysql_backup
  これで、mysqlのデータバックアップ。
```

```
brew uninstall mysql  
brew uninstall mysql@5.6 
brew uninstall mysql@5.7
```
まずはmysqlをアンインストール！

##次にlocal配下のmysqlを全て削除する
```
$ rm -rf /usr/local/mysql
$ rm -rf /Library/StartupItems/MYSQL
$ rm -rf /Library/PreferencePanes/MySQL.prefPane
$ rm -rf /Library/Receipts/mysql-.pkg
$ rm -rf /usr/local/Cellar/mysql*
$ rm -rf /usr/local/bin/mysql*
$ rm -rf /usr/local/var/mysql*
$ rm -rf /usr/local/etc/my.cnf
$ rm -rf /usr/local/share/mysql*
$ rm -rf /usr/local/opt/mysql
```
###ポイント！
**brew uninstall mysqlでは削除できない**ファイル群を削除するのが大事！
残っているとアンインストールしても解消されないので、**すっきり全て削除！**

##mysqlを再インストール
```
brew install mysql(＠__使用するmysqlバージョンを指定)
```

## mysqlコマンドをどこからでも実行できるようする
```
$ echo 'export PATH="/usr/local/opt/mysql/bin:$PATH"' >> ~/.bash_profile

　mysqlバージョンを指定している場合(mysql@5.6)
$ echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.bash_profile

$ source ~/.bash_profile 

  mysqlのコマンドが打てるか確認する
$ which mysql
  以下のように表示されれば成功
/usr/local/opt/mysql/bin/mysql

```

## 最後にmysqlを起動
```
　mysqlの状態を確認するコマンドです
$ mysql.server status

　以下のように表示されれば成功
 SUCCESS! MySQL running (29385)
```
他にもプロセスを確認

```
$ ps ax | grep mysql
29714 s001  S      0:00.03 /bin/sh /usr/local/Cellar/mysql/8.0.19/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/ユーザMBP.pid
29825 s001  S      0:05.17 /usr/local/Cellar/mysql/8.0.19/bin/mysqld --basedir=/usr/local/Cellar/mysql/8.0.19 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/8.0.19/lib/plugin --log-error=ユーザMBP.err --pid-file=/usr/local/var/mysql/ユーザMBP.pid
29837 s001  S+     0:00.00 grep mysql
```
ok問題ないですね！

参考
https://teratail.com/questions/199085

これでようやく解決してくれました！
###本当に強引な方法ではありますがうまくいきました！





#最後に
本当によく躓くエラーなので反省をとこれからの課題として記事として残しておきます！！