shotnの心の無垢ままに

主にプログラミングなどのIT関連の記事を心の向くままに書いていくブログです。

次の日になったらMySQLが起動しなくなった!?

昨日に引き続きMySQLです。

事件発生!!

インストールした後PCを落として、今日いよいよ使おうと思ってMySQLに接続を試みたところ以下のエラーが発生ました。

$ mysql -uroot -p
-bash: mysql: command not found

またPATHが通ってないんですね…

よくよく調べてみるとターミナルでexportを使用して環境変数を設定すると、そのターミナル内だけで使用でき、再起動後などは使用できなくなるようです。

Windowsでいうところの「SET」コマンドと同じですね!

試しにexportコマンドで環境変数を設定した後に、ターミナルをもう一つ開いてecho $PATHで環境変数を見てください。exportコマンドを実行したターミナルと結果が違うはずです!

今後もMySQLは使用していくと思うので、ここは常時環境変数に設定されるようにしましょう!

環境変数の常時設定

まずは必要な環境変数と追加したいパスをコピーしておきましょう。

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

MySQLのパスは昨日と同じなので、「/usr/local/Cellar/mysql/5.7.20/bin」を使用します。

viエディタを使って.bash_profileを開く

まずはviエディタというメモ帳のようなものを使用して、.bash_profileというファイルを開きます。この.bash_profileが環境変数を記述するファイルです。

$ vi .bash_profile

おそらくこのファイルを触ったことがなければ、何も書かれていないファイルが開かれると思います。

そこに以下の記述を追加します。 追加するには、まずviを挿入モードにする必要があります。 viを開いた状態だと思いますので、ここで半角入力(英字入力)にして「i」を入力すると挿入モードになります。

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/mysql/5.7.20/bin

上記の内容を追加したら、挿入モードを抜けるためescキーを一回押します。 その後に「:wq」と入力してください。 これで保存して、viを閉じることができます。 「w」が保存、「q」がviを閉じるという意味になります。

次に.bash_profileの内容を反映させるために以下のコマンドを実行します。

$ souce .bash_profile

更なる事件

よーし、これでMySQLを起動できると思いますので、以下のコマンドを実行します。

$ mysql -uroot -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

あれ?まだエラーが発生するなんでだ?ネットでググってみるとまず/tmp/mysql.sockをコマンドに打ってみろとのことだったので

$ sudo touch /tmp/mysql.sock

※実行に管理者権限が必要らしいので、sudoつけてます。

よっしゃ!もう一度

$ mysql -uroot -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)

今度はさっき(2)だったエラーが(38)のエラーが変わりましたね。 参考にしていたサイトではサービス起動していなかったのが原因だったそうなので、もういっちょ

$ sudo mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/Machine.local.pid).

あらまだエラーが発生するな・・・ 調べてみると上で出てた/tmp/mysql.sockを消さないといけないらしい

ではファイルを削除します!

$ sudo rm /tmp/mysql.sock

これでもう一度起動して見ます。

$ sudo mysql.server start
Starting MySQL
 SUCCESS! 

起動に成功しました。 環境構築というのはなかなかに大変なものですね・・・

ではまた次回!