0
0

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 3 years have passed since last update.

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)の解決

Last updated at Posted at 2020-06-18

問題

ソケット'/tmp/mysql.sock'を通じてローカルのMySQLサーバーに接続することができない。

下記の図で言うと、クライエント側からMySQLサーバーに接続しようとしていて、接続するためには'/tmp/mysql.sock'というファイルを出力する必要があるのだが、それができない状態。

ソケットとは何か?

スクリーンショット 2021-01-21 午後8.37.11.png

ソケットはプロセスやネットワーク間の通信を行う部分のこと。
MySQLではこのソケットを通してサーバーとクライアントが接続される。

※と書いてみたものの、まだネットワークの理解も、MySQLのクライエント側とサーバー側というのもよくわかっていないので、また調べて追記する。

問題の原因は?

MAMPを起動して、そちらでポート番号(3306)を開いていて重複してしまったため。
MySQLのポート番号は3306と決まってお利、特定のポート番号は重複して使えない。

今回はPHPの学習をするためにMAMPを起動していたので、一旦MAMPを停止しポート番号の重複を避ける必要があった。

原因を知るまでに試したこと

①MySQLを起動できているか確認

$ mysql -u root -p

このコマンドでMySQLに入ろうとしたが、冒頭のと同じエラーが出てしまった。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
naota7118@Naotas-MacBook-Air-6 pfc-master % 

②database.ymlを確認

config/database.yml
default:
  adapter: mysql2
  encoding: utf8mb4
  charset: utf8mb4
  collation: utf8mb4_unicode_ci
  pool: 5
  username: root
  password: password
  host: db
  wait_timeout: 180
  # socket: /tmp/mysql.sock←

←の部分をコメントにしたりコメントではなくしてみたり試したが、変わらなかった。
この設定はいらなかったようだ。

③MySQLサーバーが起動しているか確認

MySQLサーバーは起動していてポート番号3306が使われていることに気づいた。

naota7118@Naotas-MacBook-Air-6 pfc-master % ps ax | grep mysqld
28532   ??  S      0:00.07 /bin/sh /Applications/MAMP/Library/bin/mysqld_safe --port=3306 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --log-error=/Applications/MAMP/logs/mysql_error_log
28824   ??  S      0:01.92 /Applications/MAMP/Library/bin/mysqld --basedir=/Applications/MAMP/Library --datadir=/Applications/MAMP/db/mysql57 --plugin-dir=/Applications/MAMP/Library/lib/plugin --log-error=/Applications/MAMP/logs/mysql_error_log.err --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --socket=/Applications/MAMP/tmp/mysql/mysql.sock --port=3306
31583 s002  R+     0:00.00 grep mysqld

解決方法

MAMPを停止させた。
もし同じエラーが出たら、別のところでMySQLを起動していないか確認してみるといいかもしれない。

参考記事

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?