ハマった内容
Node.jsで開発環境を構築中に・・・npm install --save mysql2
上記のコマンドでmysql2をインストール。 その後にmigrateしようとした所こんなエラーが。
ERROR: connect ECONNREFUSED 127.0.0.1:3306
ふむ…?
まぁ接続エラーなんだろうけど、解決手順で若干ハマった。
調べてもピンとくる解決方法が出てこない。
dockerの〜、とか書いてあるけどdocker使ってないしなぁ。
ふと我に返り、mysql自体起動してないじゃん!www
と思ったが
いや、起動の仕方・・・はて・・・?
Node.jsってnpmコマンドからMysql起動するんか?
いや普通にmysql.server
コマンドか・・・?
起動してないなら起動すれば良いじゃない、と思っていたが
mysql.server start
コマンドを実行。
ERROR! The server quit without updating PID file (/usr/local/var/mysql/Mbp-2.local.pid).
おぉん?
ググったらこちらの記事を発見。
上記の通りに権限付与し、再度実行してみる。
どれどれ…
ERROR! The server quit without updating PID file (/usr/local/var/mysql/Mbp-2.local.pid).
おい!!!!いま権限付与しただろうが!
権限どうなってんだよ!
起動できないから一旦綺麗に
上記の記事を参考にしてみる。
一番有力とされる「パターン5」を試してみよう。
一通り削除して。。。
2.MySQL再インストール
を試みる。
❯ brew install mysql
Error: No such file or directory - /usr/local/var/homebrew/linked/mysql
んなぁ〜〜〜〜、どうなってんだよ次から次へと…
大したデータもないので、上記を元に一旦クリーンアップを実行。
brew remove mysql
brew cleanup
綺麗さっぱり。
mysqlを再インストール。
❯ mysql --version
mysql Ver 8.0.31 for macos13.0 on x86_64 (Homebrew)
無事入りましたね。
無事インスコ完了したが
さて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ファイルが消えてますね。。。。度し難い。。。
再生成、実行、を行なっても同じ。
まさにこの記事。
のこの部分。
touch /usr/local/var/mysql/*****.local.pidでpidファイルを作成しようと試みる → 作成自体は出来るがなぜか一定時間経つと作成したpidファイルが消える
プロセスを確認してみる
❯ 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系のファイルなどは完全に消し去ったと思っていたのでとても驚きました。
ないぞ…
しかし
一旦
mysql -u root
を実行してみよう。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
これみたことあるやつや!
ここに参考対処法が載っていますね。
やってみましょう。
やっぱり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
一体どうしたら良いんや
待てよ?これじゃない?
弄ってたファイルの箇所と、参照先が別だったり?
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).
だめぽい。
無限ループ。
こちらを最後の頼みの綱に一通り実行。
❯ 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`).
そして…
❯ mysql.server start
Starting MySQL
...... SUCCESS!
マジで言ってる?
こんな幕引きある?
remove
じゃなくてuninstall
だったら一発で解決できたのか…
マジで、お前…(3時間溶かした)