Macユーザー必見!MySQLで「ERROR 2002」が出た時の解決方法とは?

Mac

MacでMySQLを使っていて、こんなエラーメッセージが表示されて困ったことはありませんか?

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

いきなりこんなメッセージが出ると、「何これ?」「どうしよう?」と焦ってしまいますよね。

でも大丈夫です。このエラーは実はよくあることで、きちんとした手順で解決できます。

この記事では、Mac環境でこのエラーが起きる理由と、具体的な解決方法を初心者の方にもわかりやすく説明します。


スポンサーリンク

このエラーの意味とは?

エラーメッセージをかんたんに説明

このエラーメッセージを日本語で説明すると、こんな意味です:

「MySQLというデータベースソフトに接続しようとしたけど、つながらなかった。理由は、決められた場所にある接続用のファイル(mysql.sock)が見つからないから」

もう少し詳しく

ソケットファイルとは?

  • MySQL同士が話をするための「窓口」のようなもの
  • 普通は決まった場所に作られる
  • このファイルがないと、MySQLにアクセスできない

なぜエラーが起きるの?

  1. MySQLが起動していない(一番よくある原因)
  2. ソケットファイルが予想と違う場所にある
  3. 設定ファイルの内容がまちがっている
  4. 権限の問題

よくある場面

典型的なパターン

  • Macを再起動した後
  • ターミナルで mysql -u root -p を実行した時
  • 新しくMySQLをインストールした直後
  • システムアップデート後

エラーが出る流れ

  1. コマンド実行mysql -u root -p を入力
  2. 接続試行:MySQLクライアントがサーバーを探す
  3. ファイル確認:指定された場所でソケットファイルを探す
  4. エラー発生:ファイルが見つからないのでエラー表示

まとめ

まずはエラーの仕組みを理解することが大切です。

次は、Macでよくある原因をひとつずつ確認していきましょう。


Macでよくある原因と確認方法

原因1:MySQLサーバーが起動していない

一番よくある原因がこれです。MySQLというソフト自体が動いていないパターンです。

確認方法

brew services list

このコマンドを実行すると、こんな感じで表示されます:

Name    Status  User Plist
mysql   stopped root /Library/LaunchDaemons/homebrew.mxcl.mysql.plist

「stopped」と表示されていたら、MySQLが止まっています。

原因2:ソケットファイルの場所がちがう

MySQLが動いていても、接続用のファイルが予想と違う場所にあることがあります。

確認方法

find /usr/local -type s -name mysql.sock 2>/dev/null

または:

find /tmp -name mysql.sock 2>/dev/null

よくある場所

  • /tmp/mysql.sock
  • /usr/local/var/mysql/mysql.sock
  • /var/run/mysqld/mysqld.sock

原因3:設定ファイルの問題

MySQLの設定ファイル(my.cnf)の内容がまちがっていることがあります。

確認方法

cat /usr/local/etc/my.cnf

または:

cat /etc/my.cnf

設定例

[client]
socket = /tmp/mysql.sock

原因4:権限の問題

ファイルやフォルダーの権限設定に問題がある場合があります。

確認方法

ls -la /tmp/mysql.sock
ls -la /usr/local/var/mysql/

Homebrewについて補足

Homebrewとは?

  • Macで使える便利なソフト管理ツール
  • MySQLを簡単にインストール・管理できる
  • コマンド一つでソフトの開始・停止ができる

よく使うコマンド

  • brew services start mysql:MySQLを開始
  • brew services stop mysql:MySQLを停止
  • brew services restart mysql:MySQLを再起動
  • brew services list:サービス状況を確認

確認の手順

  1. まずはサービス状況をチェック brew services list | grep mysql
  2. ソケットファイルの場所を探す find /tmp /usr/local/var -name "mysql.sock" 2>/dev/null
  3. MySQLプロセスの確認 ps aux | grep mysql

まとめ

原因が特定できれば、次はそれぞれの対処法を実行してみましょう。

ほとんどの場合、この中のどれかが原因になっています。


Macでの具体的な解決方法

解決方法1:MySQLを起動する

Homebrewを使っている場合

# MySQLを起動
brew services start mysql

# 確認
brew services list | grep mysql

直接起動する場合

# バックグラウンドで起動
mysqld_safe --user=mysql &

# または
sudo /usr/local/mysql/support-files/mysql.server start

解決方法2:ソケットファイルのパスを指定して接続

よくあるパターン1

mysql -u root -p --socket=/tmp/mysql.sock

よくあるパターン2

mysql -u root -p --socket=/usr/local/var/mysql/mysql.sock

TCP/IP接続を使う方法

mysql -u root -p --host=127.0.0.1 --port=3306

解決方法3:設定ファイルを修正

設定ファイルの編集

# ファイルを開く
nano /usr/local/etc/my.cnf

設定内容の例

[client]
socket = /tmp/mysql.sock
port = 3306

mysql:

socket = /tmp/mysql.sock port = 3306

mysqld:

socket = /tmp/mysql.sock port = 3306 bind-address = 127.0.0.1

設定変更後の再起動

brew services restart mysql

解決方法4:権限の修正

権限の確認

ls -la /tmp/mysql.sock
ls -la /usr/local/var/mysql/

権限の修正

# MySQLユーザーが所有者になるように変更
sudo chown mysql:mysql /usr/local/var/mysql/
sudo chmod 755 /usr/local/var/mysql/

解決方法5:完全にリセットする

どうしても解決しない場合

  1. MySQLを完全停止brew services stop mysql
  2. プロセスの確認と終了ps aux | grep mysql sudo killall mysqld
  3. 再起動brew services start mysql

トラブルシューティングのコツ

段階的に試す

  1. まずは brew services start mysql
  2. だめなら --socket オプションで接続
  3. それでもだめなら設定ファイルを確認
  4. 最後は完全リセット

ログを確認する

# エラーログの確認
tail -f /usr/local/var/mysql/*.err

# 一般ログの確認  
tail -f /usr/local/var/mysql/*.log

実際の成功例

Homebrew経由でインストールした場合

# 1. サービス起動
brew services start mysql

# 2. 接続確認
mysql -u root -p --socket=/usr/local/var/mysql/mysql.sock

# 成功!
Welcome to the MySQL monitor...

まとめ

これらの手順で、ほとんどの場合は問題が解決します。次は、MySQLのインストール手順について簡単に確認しておきましょう。


MacにMySQLをインストールする正しい方法

Homebrewを使った安全なインストール

事前準備

# Homebrewがインストールされているか確認
brew --version

# インストールされていない場合は公式サイトからインストール

MySQLのインストール手順

  1. Homebrewを最新にするbrew update
  2. MySQLをインストールbrew install mysql
  3. MySQLを起動brew services start mysql
  4. 接続テストmysql -u root

セキュリティ設定

必須のセキュリティ設定

mysql_secure_installation

この設定で以下のことを行います:

  • rootパスワードの設定
  • 匿名ユーザーの削除
  • リモートからのrootアクセス禁止
  • テストデータベースの削除

設定の流れ

Set root password? [Y/n] Y
新しいパスワードを入力

Remove anonymous users? [Y/n] Y
匿名ユーザーを削除

Disallow root login remotely? [Y/n] Y
リモートからのrootログインを禁止

Remove test database? [Y/n] Y
テストデータベースを削除

Reload privilege tables now? [Y/n] Y
権限テーブルを再読み込み

インストール後の確認

正常に動作しているかチェック

# サービス状況確認
brew services list | grep mysql

# バージョン確認
mysql --version

# 接続テスト
mysql -u root -p

よくあるインストールの問題

問題1:Homebrewがない

# Homebrewをインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

問題2:古いバージョンが残っている

# 古いMySQLを削除
brew uninstall mysql
brew cleanup

# 再インストール
brew install mysql

問題3:権限エラー

# Homebrewの権限修正
sudo chown -R $(whoami) /usr/local/var/homebrew

便利な設定

自動起動の設定

# Mac起動時に自動でMySQLを開始
brew services start mysql

設定ファイルの場所

  • /usr/local/etc/my.cnf
  • ~/.my.cnf

データディレクトリ

  • /usr/local/var/mysql/

まとめ

MySQLを正しくインストールしておくことで、多くの接続トラブルを未然に防げます。次に、日常のメンテナンスと予防策を見ていきましょう。


エラーを未然に防ぐ予防策

日常的なチェック習慣

定期的なステータス確認

# 毎日の確認コマンド
brew services list | grep mysql

週1回のヘルスチェック

# MySQLの状態確認
mysqladmin -u root -p status

# データベース一覧確認
mysql -u root -p -e "SHOW DATABASES;"

設定ファイルの管理

バックアップの習慣

# 設定変更前は必ずバックアップ
cp /usr/local/etc/my.cnf /usr/local/etc/my.cnf.backup.$(date +%Y%m%d)

設定ファイルの管理方法

  1. 変更前は必ずバックアップ
  2. 変更内容をメモに残す
  3. 変更後は必ず再起動して確認
  4. 問題があればバックアップから復元

ソケットファイルの確認

ソケットパスのメモ: 自分の環境での正しいソケットパスを確認してメモしておきます。

# ソケットファイルの場所を確認
mysql_config --socket

# または
mysqladmin -u root -p variables | grep socket

よくあるパス

  • Homebrew MySQL:/tmp/mysql.sock
  • 公式MySQL:/var/lib/mysql/mysql.sock
  • カスタムインストール:設定による

システムメンテナンス

macOS アップデート後の確認

# アップデート後は必ずチェック
brew services list
brew services restart mysql

Homebrewのメンテナンス

# 月1回程度実行
brew update
brew upgrade
brew cleanup

トラブル時の対応準備

緊急時のコマンド集

# MySQL起動
brew services start mysql

# 強制再起動
brew services stop mysql
sleep 5
brew services start mysql

# ログ確認
tail -n 50 /usr/local/var/mysql/*.err

連絡先リスト

  • 社内のサーバー管理者
  • システム会社の連絡先
  • 重要なデータベースのバックアップ場所

監視の自動化

簡単な監視スクリプト

#!/bin/bash
# check_mysql.sh

if brew services list | grep mysql | grep started > /dev/null; then
    echo "MySQL is running"
else
    echo "MySQL is not running - starting..."
    brew services start mysql
fi

定期実行の設定

# crontabに登録(毎時チェック)
crontab -e
0 * * * * /path/to/check_mysql.sh

バックアップ戦略

データの定期バックアップ

# 日次バックアップスクリプト例
mysqldump -u root -p --all-databases > backup_$(date +%Y%m%d).sql

設定ファイルのバックアップ

# 週次でバックアップ
tar -czf mysql_config_backup_$(date +%Y%m%d).tar.gz /usr/local/etc/my.cnf

まとめ

日頃からのメンテナンスと予防策が、トラブルを大幅に減らしてくれます。小さな習慣が大きなトラブルを防いでくれるので、ぜひ取り入れてみてくださいね。


全体のまとめ

「ERROR 2002 (HY000)」は、Mac環境でMySQLを使うときによく出会うエラーですが、正しく対処すれば必ず解決できます。

この記事で学んだこと

  1. エラーの意味:MySQLサーバーとの接続ができない状態
  2. 主な原因:サーバー未起動、ソケットファイルの場所違い、設定問題
  3. 解決方法:段階的なトラブルシューティング手順
  4. 予防策:日常的なメンテナンスと監視

解決手順の早見表

手順コマンド説明
1. 状況確認brew services list | grep mysqlMySQLの起動状況をチェック
2. 起動brew services start mysqlMySQLを起動
3. 接続テストmysql -u root -p通常の接続を試す
4. ソケット指定mysql -u root -p --socket=/tmp/mysql.sockソケットを明示して接続
5. 再起動brew services restart mysql完全に再起動

コメント

タイトルとURLをコピーしました