211
208

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-03-15

Railsアプリ起動でmysqlのエラーが出た。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

(注)ただ起動していないだけかもしれないので

sudo mysql.server start

して「SUCCESS!」と出なかったら以下を実行する

ここで注意したいのがsudoつけ忘れでも"permission denied"のエラーがでないということ

mysql.server start

にはsudoつける
sudo つければ普通に起動できる

自分が確認した順にまとめたので順番おかしかったらコメント等お願いします。

原因1:読み込み先がとsocketの位置が合ってない

config/database.ymlのsocketで指定してるとこと合ってるか確認

mysql_config --socket

でsocketの位置が確認できる。

mysql --help | grep my.cnf

で設定ファイルの場所を確認できる。

##原因2:socketがない
上で確認した場所にsoketがない

$ sudo touch /tmp/mysql.sock

で作成して

$ mysql -u root -p

したら

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)

原因3:mysqlが起動していない

$ ps ax | grep mysqld

起動できていない場合↓

6359 s002  S+     0:00.00 grep mysqld

起動できている場合↓

28424   ??  S      0:00.02 /bin/sh /usr/local/Cellar/mysql@5.7/5.7.25/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/hogehogenoMacBook-Pro.local.pid
28532   ??  S      0:01.71 /usr/local/Cellar/mysql@5.7/5.7.25/bin/mysqld --basedir=/usr/local/Cellar/mysql@5.7/5.7.25 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql@5.7/5.7.25/lib/plugin --user=mysql --log-error=hogehogenoMacBook-Pro.local.err --pid-file=/usr/local/var/mysql/hogehogenoMacBook-Pro.local.pid
29875 s001  R+     0:00.00 grep mysqld

原因3:socketに権限がない

$ chmod 777 /tmp/mysql.sock

してmysql -u root -pしても

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)
$ chmod g+w /tmp/mysql.sock

↑こっちでも同じエラーだった。

これしたら起動できた。

$ sudo chown mysql:mysql /tmp

どれが一番いい権限の付与の方法かはわからない。

原因4:mysql.server startしてないのにmysqlにログインしようとしてた

$ mysql -u root -p

はmysql起動してないとできるわけがない(当たり前すぎる)

socke作ったり、権限付与したらちゃんと

$ sudo mysql.server restart

してから

$ mysql -u root -p

すること。

まとめ

  • socketの指定位置確認
  • socket自体あるか確認
  • なければ作る
  • 権限あたえる
  • restart
  • mysql -u root -p

補足

mysql.server startにsodoを忘れると

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

というエラーが出る。

211
208
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
211
208

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?