箱のプログラミング日記。

渋谷の自社開発企業でRails書いてます。

MySQLがまたまた起動しない【自動起動で解決】

f:id:y_hakoiri:20191102121618j:plain

以前もだいぶエラーにハマってこんな感じの記事を書いた気がするのだけど、前はだいぶごちゃごちゃいろんな原因が絡んでいて複雑だったので、改めてシンプルに残しておくためにメモ。

ハマったエラー

$ bin/rails db:migrate
rails aborted!
Mysql2::Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

マイグレーション実行したところソケットが見つからないみたいな感じで怒られた。

解決 - プロセスを見る

$ ps ax | grep mysqld
4308 s000  S+     0:00.00 grep mysqld

プロセス確認してみたところ動いてない。

ということで再起動

$ mysql.server restart
 ERROR! MySQL server PID file could not be found!
Starting MySQL
. SUCCESS!

なんかエラー出てるけど成功はしている...(PIDファイルが見つからないとかソケットが繋がらないとか前も起こったなあ)

$ ps ax | grep mysqld
 4324 s000  S      0:00.03 /bin/sh /usr/local/Cellar/mysql@5.7/5.7.29/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/usernoMBP.pid
 4424 s000  S      0:00.41 /usr/local/Cellar/mysql@5.7/5.7.29/bin/mysqld --basedir=/usr/local/Cellar/mysql@5.7/5.7.29 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql@5.7/5.7.29/lib/plugin --log-error=usernoMBP.err --pid-file=/usr/local/var/mysql/usernoMBP.pid
 4426 s000  R+     0:00.00 grep mysqld

プロセス見ると動いてる。

で、migrateはできて、mysqlへのログインも成功した。

とりあえず目的は果たせたので良いかな。。進捗急ぎめなので今後またエラー出るようであればしっかり調べて解決します。

解決その2

(2020/02/12 改)

単にPCを再起動するたびに毎回プロセスが切られていて、その後MySQLサーバーを立ち上げ直していないだけだった。

調べてみたら、いちいち手動で立ち上げなくても「自動起動」を設定しておけば良いらしい。

前のPC使ってた時は再起動後も勝手に立ち上がってたはずなんだけどな、、、知らない間に設定してたんだろうか?

自動起動の設定方法

homebrew-servicesというのを使うらしいので、Homebrewでインストール。

$ brew tap homebrew/services

これで準備ができたので、一旦さっき立ち上げたサーバーを切り

$ mysql.server stop

今度はhomebrew-servicesからMySQLのサーバーをstartする。

$ brew services start mysql
Error: Formula `mysql` is not installed.

あれっ、、なんかエラー出た。

エラー文でググってみたら同じような記事があってすぐ解決。

brew list | grep mysql
mysql@5.7

MySQLのバージョンを確認して、

$ brew services start mysql@5.7
  Successfully started `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)

成功!

ちゃんとバージョンまで明記してあげないといけなかったみたいです。

参考

mysqlのsocketエラーでrailsアプリが起動できない - Qiita

(2020/02/12追加分↓)

mac MySQL ターミナル 自動起動 - Qiita

homebrewでインストールしたmysqlを自動起動できない→できた - Qiita