LoginSignup
0
0

More than 3 years have passed since last update.

Mysql2::Error::ConnectionErrorが出たときの解決法

Last updated at Posted at 2020-03-30

MySQLエラー発生

PCを再起動した後rails sでアプリケーションサーバを起動ようとしたところMySQLエラーが発生しました。

Mysql2::Error::ConnectionError
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

エラーを見ると「/tmp/mysql.sockを通じてローカルのMySQLサーバーに接続できませんでした。」と書いてあります。

mysql.sockが無い!?
sockというのは、ファイルシステムソケットのことで、ローカルシステム内で通信を行う際に、このsockファイルを仲介役にしてMySQLとRuby/Rails間での通信を行っています。
このsockファイルはMySQLが起動した時に生成され、MySQLが停止すると削除されるファイルです。

MySQLエラー解決に必要なこと

MySQLエラーには色々な原因があるので、今起きている問題は何なのか要素を切り分けて考えることが必要です。

1.MySQLサーバーが起動しているか
2.起動に必要な権限があるか
3.ソケットのパスが正しく通っているか
4.ソケットの生成場所が正しく設定されているか
5.MySQLサーバーが複数起動していないか

この記事では1と2の解決方法について解説します。

1.MySQLサーバーを起動させる

PCを再起動したときにMySQLが停止してmysql.sockが削除されてしまっています。
なのでMySQLを起動させてsockファイルを生成しましょう。

# MySQLを起動
$ mysql.server start

mysql.server startでダメなら

原因不明ですがMySQLを起動する権限が現在のユーザーでなくなっていることがあるようです。
この場合でもsudoコマンドを使ってroot権限でMySQLを起動させることができます。

$ sudo mysql.server start

Starting MySQL
.. SUCCESS!
と表示されればOKです。

2.必要な権限を与える

権限の確認

1.MySQLのあるディレクトリまで、cdコマンドで移動します。

$ cd /usr/local/var

2.pwdコマンドで今居るディレクトリを表示して正しく移動できたか確認します。

$ pwd
# /usr/local/varと表示されればOKです。

3.ディレクトリの状態を確認します。

$ ls -l

usr/local/varの配下で起動中のプロセスが表示されます。

total 0
drwxrwxr-x   4 yamazaki  admin   128  8  7  2019 homebrew
drwxr-xr-x   3 yamazaki  admin    96 11  8 23:22 log
drwxr-xr-x  13 _mysql    _mysql  416  3 19 06:40 mysql
drwx------  25 yamazaki  admin   800  3  5 01:02 postgres
drwx------  24 yamazaki  admin   768 10 30 00:34 postgresql@10

mysqlの所だけユーザー名ではなく_mysqlとなっています。

4.chownコマンドでディレクトリの権限を変更させます。

$ sudo chown -R [ユーザー名] mysql

5.[ユーザー名]の部分に任意のユーザー名を入れます。

$ sudo chown -R yamazaki mysql

6.変更を確認します。

$ ls -l
total 0
drwxrwxr-x   4 yamazaki  admin   128  8  7  2019 homebrew
drwxr-xr-x   3 yamazaki  admin    96 11  8 23:22 log
drwxr-xr-x  12 yamazaki  _mysql  384  3 21 17:45 mysql
drwx------  25 yamazaki  admin   800  3  5 01:02 postgres
drwx------  24 yamazaki  admin   768 10 30 00:34 postgresql@10

権限がユーザーに変更されました。
この状態でMySQLを起動してみましょう。

$ mysql.server start

無事起動できればOKです。

0
0
0

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
0
0