Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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).

というエラーが出る。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした