connect ECONNREFUSED 127.0.0.1:3306　ってなんぞや

<h2>
ハマった内容
</h2>
Node.jsで開発環境を構築中に・・・

```
npm install --save mysql2
```
<br>
上記のコマンドでmysql2をインストール。
その後にmigrateしようとした所こんなエラーが。

```
ERROR: connect ECONNREFUSED 127.0.0.1:3306
```

ふむ…？
まぁ接続エラーなんだろうけど、解決手順で若干ハマった。
調べてもピンとくる解決方法が出てこない。
dockerの〜、とか書いてあるけどdocker使ってないしなぁ。

ふと我に返り、mysql自体起動してないじゃん！www

と思ったが

いや、起動の仕方・・・はて・・・？
Node.jsってnpmコマンドからMysql起動するんか？
いや普通に`mysql.server`コマンドか・・・？

<h2>
起動してないなら起動すれば良いじゃない、と思っていたが
</h2>

`mysql.server start` コマンドを実行。

``` 
ERROR! The server quit without updating PID file (/usr/local/var/mysql/Mbp-2.local.pid).
```

おぉん？

ググったらこちらの記事を発見。

https://qiita.com/jonakp/items/477a18d4a94c01a31583

上記の通りに権限付与し、再度実行してみる。

どれどれ…

```
 ERROR! The server quit without updating PID file (/usr/local/var/mysql/Mbp-2.local.pid).
```

おい！！！！いま権限付与しただろうが！
権限どうなってんだよ！

https://zenn.dev/endo/articles/24cad36f73626abbde67

<h2>起動できないから一旦綺麗に</h2>

上記の記事を参考にしてみる。
一番有力とされる「パターン５」を試してみよう。

一通り削除して。。。

2.MySQL再インストール
を試みる。

```
❯ brew install mysql

Error: No such file or directory - /usr/local/var/homebrew/linked/mysql
```
んなぁ〜〜〜〜、どうなってんだよ次から次へと…

https://usimaru.net/tips-mysqlpiderror/

大したデータもないので、上記を元に一旦クリーンアップを実行。
```
brew remove mysql
brew cleanup
```
綺麗さっぱり。
mysqlを再インストール。

```
❯ mysql --version        
mysql  Ver 8.0.31 for macos13.0 on x86_64 (Homebrew)

```

無事入りましたね。

<h2>無事インスコ完了したが</h2>

さてmysqlサーバーを起動しますか。

```
❯ mysql.server start    
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/Mbp-2.local.pid).
```

おやおやおやおやおやおやおやおや。

```
-rw-r-----    1 _mysql      _mysql      5414 12  4 07:58 Mbp-2.local.err
-rw-r-----    1 _mysql      _mysql        56 12  4 07:47 auto.cnf
-rw-r-----    1 _mysql      _mysql       180 12  4 07:52 binlog.000001
-rw-r-----    1 _mysql      _mysql       180 12  4 07:54 binlog.000002
-rw-r-----    1 _mysql      _mysql       180 12  4 07:56 binlog.000003
```
PIDファイルが消えてますね。。。。度し難い。。。
再生成、実行、を行なっても同じ。

https://zenn.dev/ogakuzuko/articles/1d9d20fb5cbef8

まさにこの記事。
のこの部分。
>touch /usr/local/var/mysql/*****.local.pidでpidファイルを作成しようと試みる　→　作成自体は出来るがなぜか一定時間経つと作成したpidファイルが消える

<h2>
プロセスを確認してみる
</h2>

```
❯ ps aux | grep mysql
[User name]       25828   0.0  0.0 34147976    744 s001  S+    8:10AM   0:00.01 grep --color=auto mysql
```
ううむ…

>この時初めて気が付きました。mysql8系のプロセスが動いていることに…（2行目と3行目のやつです）。これまでの試行錯誤の中で8系のファイルなどは完全に消し去ったと思っていたのでとても驚きました。

ないぞ…

<h2>
しかし
</h2>

一旦
`mysql -u root`
を実行してみよう。
```
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
```
これみたことあるやつや！
ここに参考対処法が載っていますね。
やってみましょう。

https://qiita.com/hondy12345/items/d32ed749fb49e9da7de6


https://qiita.com/fujitora/items/d341c52706d1954cae28

やっぱりmysql.startしてないとだめ、やっぱそうだよね。。。

ソケットもある。
権限は…

```
-rw-r--r--  1 root  wheel  0 12  4 08:15 /tmp/mysql.sock
```

おや？所有者がrootだね,
mysqlに変えてみよう。

```
❯ sudo chown -R mysql:mysql /tmp/mysql.sock  
-rw-r--r--  1 _mysql  _mysql  0 12  4 08:15 /tmp/mysql.sock
```

```
❯ 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/Mbp-2.local.pid).

```

うー、振り出し。
プロセス問題なのかと思ってもこれ。

```
❯ ps ax | grep mysql 
28696 s001  R+     0:00.01 grep --color=auto mysql
```

一体どうしたら良いんや


https://qiita.com/_natsu_no_yuki_/items/ae4c94187093e4ab3cdc

待てよ？これじゃない？
弄ってたファイルの箇所と、参照先が別だったり？

```
sudo rm -rf /usr/local/var/mysql
/usr/local 32s
❯ mysql.server start
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/Mbp-2.local.pid).

```
だめぽい。
無限ループ。

https://qiita.com/knoth071211/items/eb620ac9847d678da1c6

こちらを最後の頼みの綱に一通り実行。

```
❯ brew uninstall mysql  
Uninstalling /usr/local/Cellar/mysql/8.0.31... (315 files, 296.3MB)

❯ brew install mysql@8.0
Running `brew update --auto-update`...
==> Downloading https://ghcr.io/v2/homebrew/core/mysql/manifests/8.0.31
Already downloaded: /Users/noguchirui/Library/Caches/Homebrew/downloads/eeb7708d75e293e371d52ef35b6688a9ccb547d1c84c5bfd48d285550250c638--mysql-8.0.31.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/core/mysql/blobs/sha256:060ac12104e90e62049852f99226424c570624217be883a9115ee7fd388b7290
Already downloaded: /Users/noguchirui/Library/Caches/Homebrew/downloads/ebddb1ec21452fcee0f2c93186cce37e12907688c2dfd4cbd326d142001ff36a--mysql--8.0.31.ventura.bottle.tar.gz
==> Pouring mysql--8.0.31.ventura.bottle.tar.gz
==> /usr/local/Cellar/mysql/8.0.31/bin/mysqld --initialize-insecure --user=noguchirui --basedir=/usr/local/Cellar/mysql/8.0.31 --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 -u root

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

<h2>
そして…
</h2>

```
❯ mysql.server start    
Starting MySQL
...... SUCCESS! 
```
マジで言ってる？
こんな幕引きある？

`remove` じゃなくて`uninstall`だったら一発で解決できたのか…

マジで、お前…（3時間溶かした）