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

えんじにあ奮闘記

mysqlが起動しない

f:id:y_hakoiri:20191102121704j:plain

開発途中でmysqlのバージョンを下げる必要が出てしまったので、

 

現在インストール済みの最新バージョンを一度アンインストール→

下げたバージョンを再度インストール、ということを行ったのだが

 

その後起動しなくなってしまい、だいぶ詰まりました。

 

やったこと

まず今あるバージョンをアンインストール

(Homebrewを使用)

$ brew uninstall mysql

 

その後、任意のバージョンをインストール

$ brew install mysql@5.7

 

サーバーの起動

$ mysql server start

Starting MySQL

SUCCESS!

 

ここまではこちらを参考にしました

qiita.com

 

よし、できた!と思って念のため確認したところ、

$ mysql -u root

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 44

Server version: 8.0.17 Homebrew

 

あれっ??

5.7をインストールし直したのに

まだバージョンが古いままになっている。。

 

で、この後がちゃがちゃ色々といじっていたら

サーバーの起動自体ができなくなってしまった。(中略)

以下、その後色々と試行錯誤した経緯です↓

 

ハマったエラー

$ mysql.server start

Starting MySQL

... ERROR! The server quit without updating PID file (/usr/local/var/mysql/************.local.pid).

 

サーバーを起動しようとすると、pidとかいうファイルがないと怒られる。

(*********の部分は自分のPC名)

どうやらこのエラーが出る場合は権限が問題らしい。

 

上にならって、pidファイルを作成してみる

$ touch /usr/local/var/mysql/************.local.pid

 

もう一度起動

$ mysql.server start

Starting MySQL

... ERROR! The server quit without updating PID file (/usr/local/var/mysql/************.local.pid).

 

同じエラー。

そもそも、/usr/local/var/mysqlの中身を見てみると

さっきtouchコマンドで作成したはずのpidファイルがない。

 

その後何回か同じ作業をしたけど、やっぱり出来上がらない。

************.local.errっていうファイルはあるんだけどなぁ。

 

関連ファイルを削除

$ sudo rm /usr/local/mysql

実はこれはアンインストール時にしなきゃいけなかったっぽい

mysqlをアンインストールするだけじゃなくて、

インストールしたことにより作られたファイルも一緒に

消さなきゃいけないんですね。

 

※これによりDBの中身も消えるので

再インストールした後はcreateするのを忘れずに

 

しかし、これをやっても解決しない

 

プロセスが動いてないか確認

$ ps aux | grep mysql

特に何もない。

 

解決方法:ログを見た

ここにある以外もかなり色々と試しましたが、

結局は以下の記事を参考にしながらログを見たところ、

きちんと答えが書いてありました。

(最初から見ればよかった・・・)

qiita.com

 

さっきちょっと気になってた

************.local.errっていうファイルの中に、mysqlのログが溜まるらしい。

ここをのぞいて見ると、

 

Another MySQL daemon already running with the same unix socket.

 

(自分のエラーログは消してしまったので他サイトから拝借)

どうやら他のソケットが走ってるとかなんとか。

 

ソケットファイルを削除

$ sudo rm mysql.sock

 

再起動

$ mysql.server start

Starting MySQL

SUCCESS!

 

成功!!!

そしてバージョンもしっかり5.7に!

 

$ mysql -u root

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.27 Homebrew

 

 

どうやらmysqlを再インストール、再起動するときは

socketファイルも消さなきゃいけない

(同じユーザーとしてソケット通信をしないと、

権限がないと言われてしまう)みたいです。

 

 

kamotora.net

 

分かったような分からないような・・・

とりあえず解決したのでよかったです。

 

 

まだ終わらない

やっとmysqlのエラーが解けた!と思って

意気揚々とDBのcreateをしたところ、

今度はcreateがうまくいかない・・・!

 

Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.21.dylib (LoadError)

 

なんかライブラリが読み込まれないとかなんとか。

こちらは割とすぐに解決しました

 

一度mysql2をアンインストールして、最後bundle install

$ bundle exec gem uninstall mysql2

$ bundle install

 

$bin/rake db:create

$bin/rake db:migrate

$bin/rails s

 

成功!

長かった。。

 

note.mu