MySQLが起動までたどりつかない

これから勉強の一貫で学んだことを残していきたいと思います。
初学者のため専門性には欠けるかと思いますが、生温い目でみていただけると幸いです・・・！

今回MySQLを触ってみようと環境構築に取り掛かったのですが、
インストールしてから起動までにエラーが頻発してしまいました。

結果エラーは解決しましたが、解決の決定打がわからないので、試したことを備忘録として残しておきます。

# 実行環境
MacBook M1Pro
macOS Big Sur 11.3.1

# 参考にした手順
progateの「[MySQLの開発環境を用意しよう（macOS）](https://prog-8.com/docs/mysql-env)」を見ながら
インストールを試みました。

# エラーその1：MySQLのバージョンが表示されない
まず手順通りにmysqlをインストールします。

```console: 
nekoneko@nekono-MacBook-Pro 202112 % brew install mysql@5.7
==> Downloading https://ghcr.io/v2/homebrew/core/mysql/5.7/manifests/5.7.36
Already downloaded: /Users/(ユーザー名)/Library/Caches/Homebrew/downloads/3bd8201ca705f862e6a7e4c71ec30e87f77b9372889bd10d37989ac9edf694b1--mysql@5.7-5.7.36.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/mysql/5.7/blobs/sha256:b85e04576a333c835f3a0e7f21b565b5a374628d6011226e04523c4528fb158a
Already downloaded: /Users/(ユーザー名)/Library/Caches/Homebrew/downloads/cfeea736a759c9966507b4914661430349aad7517931a07f85b95123d102248c--mysql@5.7--5.7.36.big_sur.bottle.tar.gz
==> Pouring mysql@5.7--5.7.36.big_sur.bottle.tar.gz
==> /usr/local/Cellar/mysql@5.7/5.7.36/bin/mysqld --initialize-insecure --user=(ユーザー名) --basedir=/usr/local/Cellar/mysql@5.7/5.7.36 --datadir=/usr/local/var/mysql --tmpdir=/tmp
==> Caveats
We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

mysql@5.7 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have mysql@5.7 first in your PATH, run:
  echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc

For compilers to find mysql@5.7 you may need to set:
  export LDFLAGS="-L/usr/local/opt/mysql@5.7/lib"
  export CPPFLAGS="-I/usr/local/opt/mysql@5.7/include"


To restart mysql@5.7 after an upgrade:
  brew services restart mysql@5.7
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/mysql@5.7/bin/mysqld_safe --datadir=/usr/local/var/mysql
==> Summary
🍺  /usr/local/Cellar/mysql@5.7/5.7.36: 320 files, 234.2MB
==> Running `brew cleanup mysql@5.7`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
```

インストール後も手順通りに、メッセージに書かれている一文をコピペしてパスを通そうとしましたが、ここでエラーがでます。

```console:
nekoneko@nekono-MacBook-Pro 202112 % echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
nekoneko@nekono-MacBook-Pro 202112 % source ~/.zshrc                                                    
/Users/(ユーザー名)/.zshrc:export:1: not valid in this context: /Users/（ユーザー名）/.zshrc
```
## .zshrcファイルを作成
どうやら「.zshrcファイル」がないようなので、[こちらのサイト（M1のMacのhomebrewにMySQL5.7をインストールする方法](https://freeheroblog.com/brew-mysql/)）を参考に作成したところ、やっとバージョンが表示されました！

```conosle:
nekoneko@nekono-MacBook-Pro 202112 % cd
nekoneko@nekono-MacBook-Pro ~ % touch .zshrc
nekoneko@nekono-MacBook-Pro ~ % vim .zshrc
nekoneko@nekono-MacBook-Pro ~ % cat .zshrc
export PATH=$HOME/.nodebrew/current/bin:$PATH source /Users/(ユーザー名)/.zshrc
export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
nekoneko@nekono-MacBook-Pro ~ % mysql --version
mysql  Ver 14.14 Distrib 5.7.36, for osx10.16 (x86_64) using  EditLine wrapper
```

catコマンドでファイルの中を見てみると、今までechoで入れた分が入っていたので（なぜ・・・）特にコマンド入力は行いませんでした。

パスがない人はvimで.zshrcのファイルにexport~のコマンドを入力するみたいです。

vimでの環境変数の設定方法はこちらの記事に詳しく書かれています！
→[【環境変数】vimを使って環境変数を設定する！](https://qiita.com/nyappy15th/items/deba715eb6d6aa5135f1)

#エラーその2：SQLが起動できない
「6. MySQLにログインしてみよう」の手順通りコマンドを打ちますが、SQLが起動しない・・・

```console:
nekoneko@nekono-MacBook-Pro ~ % brew services start mysql@5.7
Bootstrap failed: 5: Input/output error
Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/(ユーザー名)
/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist` exited with 5.
nekoneko@nekono-MacBook-Pro ~ % mysql.server start
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/nekoneko@nekono-MacBook-Pro.local.pid).
nekoneko@nekono-MacBook-Pro ~ % brew doctor
Your system is ready to brew.
```

`brew services start mysql@5.7`も`mysql.server start`どちらも起動しません。
一応`brew doctor`も確認しましたが異常なし。

## MySQLをアンインストールしてみる

何かの記事で一度アンインストールするとうまく起動できたとあったので、以下の順でアンインストールを実施。

残しておくとエラーが出るみたいなので、rmコマンドで設定ファイルも削除しています。
これらはMySQLのインストール時に再度インストールされます。

```console:
brew uninstall mysql@5.7
rm -rf /usr/local/var/mysql
rm -rf /usr/local/etc/my.conf
rm -rf /usr/local/etc/my.conf.default
```

再インストール後、先程同様の手順で設定し起動しますが同様のエラーが出てうまくいかず・・・

## PIDファイルを作成してみる

先程のエラーでPIDファイルがないと言われていたので作成してみます。

```console:
touch /usr/local/var/mysql/(マシンのホスト名).local.pid
```

ちなみにマシンのホスト名は`uname -n`で確認できます。

しかし作成はできてもなぜかファイルが消えてしまいます。

## プロセスを確認してみる

こちらの記事を参考に確認しました。
[MySQLが起動しない（The server quit without updating PID file ~~~）](https://zenn.dev/ogakuzuko/articles/1d9d20fb5cbef8)

```console:
nekoneko@nekono-MacBook-Pro ~ % ps aux | grep mysql  
(ユーザー名)             38661   0.4  4.2  9191356 707488   ??  S     9:39AM   0:00.21 (mysqld)
(ユーザー名)             38663   0.0  0.0  8328680   5872 s006  R+    9:39AM   0:00.01 grep mysql
```

記事ではMySQL8系のプロセスが動いていてそれらを落とすことで解決したようですが、私の環境では特に動いていないようでした。

しかし、記事にあるようにプロセスにPIDファイルに関する記載がありません。
そこでダメ元で再度PIDファイルを作成してプロセスを確認すると・・・

```console:
nekoneko@nekono-MacBook-Pro ~ % ps aux | grep mysql
(ユーザー名)             56057   0.0  0.1  8469188   9072 s006  S+    9:57AM   0:00.01 grep mysql
(ユーザー名)             54862   0.0  4.3  9205276 724832   ??  S     9:54AM   0:00.28 /usr/local/opt/mysql@5.7/bin/mysqld --basedir=/usr/local/opt/mysql@5.7 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql@5.7/lib/plugin --log-error=nekono-MacBook-Pro.local.err --pid-file=nekono-MacBook-Pro.local.pid
(ユーザー名)             54775   0.0  0.0 407984080   1776   ??  S     9:54AM   0:00.02 /bin/sh /usr/local/opt/mysql@5.7/bin/mysqld_safe --datadir=/usr/local/var/mysql
```

なんかPIDファイルを参照してるっぽい・・・！
さっきは作成しても削除されていたのに今回は正常に作成されました。

この状態で起動してみると・・・

```console:
nekoneko@nekono-MacBook-Pro ~ % brew services start mysql@5.7
nekoneko@nekono-MacBook-Pro ~ % mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: 
Please set the password for root here.
・
・
・
```

やっと起動した！！！
ここまで長かった・・・！！

# おわりに
よくないかもしれないですが、最終的に何がトリガーとなって成功したのかははっきりとはわかりません。
ただ、色々と調べてエラーの解決ができたことは大変良い経験になりました。

調べるなかで知らない知識がたくさん出てきたので、コマンド周りのことなどまだまだ勉強しないといけない点がたくさんあると感じました。

とりあえず、ようやく起動までこぎつけたので、MySQLいろいろといじってみます！！

# おまけ
インストール可能なMySQLの確認は`brew search mysql`でできます。
既にインストールされているものにはチェックマークがつきます。

```console:
nekoneko@nekono-MacBook-Pro 202112 % brew search mysql
==> Formulae
automysqlbackup                   mysql++                           mysql-client@5.7                  mysql-sandbox                     mysql@5.6                         mysqltuner
mysql                             mysql-client                      mysql-connector-c++               mysql-search-replace              mysql@5.7 ✔                       qt-mysql
```