Mac Big Sur で MariaDB がつながらない? エラー 2002 (HY000) の解決策を 5 ステップで解説
macOS Big Sur で MariaDB に接続できない問題:エラー 2002 (HY000) を解決する方法
MariaDB を macOS Big Sur で使用中に、以下のエラーが発生することがあります。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
このエラーは、MariaDBサーバーが起動していないか、ソケットファイルに問題があることを示しています。
原因
このエラーメッセージが表示される主な原因は以下の3つです。
- MariaDBサーバーが起動していない: MariaDBサーバーが起動していない場合、クライアントアプリケーションはサーバーに接続できません。
- ソケットファイルの問題: ソケットファイルは、クライアントアプリケーションとサーバー間の通信に使用される特殊なファイルです。ソケットファイルが存在しない、破損している、またはアクセス権が正しくない場合、このエラーが発生する可能性があります。
- 権限の問題: クライアントアプリケーションに、ソケットファイルへのアクセス権がない場合、このエラーが発生する可能性があります。
解決策
以下の手順で問題を解決することができます。
MariaDBサーバーが起動していることを確認する
ターミナルを開き、以下のコマンドを実行します。
sudo launchctl list | grep mysql
出力結果に com.mysql.mariadb.server
が存在すれば、MariaDBサーバーは起動しています。
ソケットファイルを確認する
以下のコマンドを実行して、ソケットファイルが存在し、破損していないことを確認します。
ls -l /tmp/mysql.sock
ソケットファイルが存在しない場合は、以下のコマンドを実行して作成します。
sudo touch /tmp/mysql.sock
ソケットファイルが破損している場合は、削除してから上記のコマンドで再作成します。
以下のコマンドを実行して、ソケットファイルの所有者とグループが mysql
ユーザーになっていることを確認します。
sudo chown mysql:mysql /tmp/mysql.sock
MariaDBサーバーを再起動する
以下のコマンドを実行して、MariaDBサーバーを再起動します。
sudo launchctl restart com.mysql.mariadb.server
ファイアウォール設定を確認する
ファイアウォールが MariaDB サーバーへの接続をブロックしていないことを確認してください。
それでも問題が解決しない場合
上記の手順で問題が解決しない場合は、以下の情報とともに、詳しい情報を提供してください。
- macOS のバージョン
- MariaDB のバージョン
- 使用しているクライアントアプリケーション
- エラーメッセージの詳細
これらの情報があれば、問題の原因を特定し、解決策を提供しやすくなります。
補足
- この問題は、Homebrew でインストールされた MariaDB にも影響する可能性があります。
- MySQL 8 以降では、デフォルトのソケットファイルの場所が
/var/run/mysql/mysql.sock
に変更されています。
サンプルコード:macOS Big Sur での MariaDB 接続エラーの解決
#!/bin/bash
# MariaDB サーバーが起動しているかどうかを確認する
launchctl list | grep mysql >/dev/null
if [ $? -eq 0 ]; then
echo "MariaDB サーバーは起動しています。"
else
echo "MariaDB サーバーが起動していないため、起動します。"
# MariaDB サーバーを起動する
sudo launchctl start com.mysql.mariadb.server
fi
#!/bin/bash
# ソケットファイルが存在するかどうかを確認する
if [ -f /tmp/mysql.sock ]; then
echo "ソケットファイルが存在します。"
else
echo "ソケットファイルが存在しないため、作成します。"
# ソケットファイルを作成する
sudo touch /tmp/mysql.sock
fi
# ソケットファイルが破損していないかどうかを確認する
if [ -s /tmp/mysql.sock ]; then
echo "ソケットファイルは破損していないようです。"
else
echo "ソケットファイルが破損しているため、削除して再作成します。"
# ソケットファイルを削除する
sudo rm /tmp/mysql.sock
# ソケットファイルを作成する
sudo touch /tmp/mysql.sock
fi
#!/bin/bash
# ソケットファイルの所有者とグループを確認する
stat /tmp/mysql.sock | grep ^Uid: | awk '{ print $2 }'
stat /tmp/mysql.sock | grep ^Gid: | awk '{ print $2 }'
# ソケットファイルの所有者とグループを mysql ユーザーに設定する
sudo chown mysql:mysql /tmp/mysql.sock
#!/bin/bash
# MariaDB サーバーを再起動する
sudo launchctl restart com.mysql.mariadb.server
使用方法
上記のコードを保存して .sh
ファイルとして実行します。例えば、fix_mysql_error.sh
という名前で保存して実行する場合は、以下のコマンドを実行します。
chmod +x fix_mysql_error.sh
./fix_mysql_error.sh
注意事項
- このコードを実行する前に、sudo 権限を持っていることを確認してください。
- このコードはあくまで例であり、状況に応じて変更する必要がある場合があります。
macOS Big Sur での MariaDB 接続エラー 2002 (HY000) を解決するその他の方法
MySQL 設定ファイル /etc/my.cnf
を編集して、ソケットファイルの場所を指定することができます。
[client]
socket=/var/run/mysql/mysql.sock
環境変数を設定する
MYSQL_UNIX_SOCKET
環境変数を設定して、ソケットファイルの場所を指定することができます。
export MYSQL_UNIX_SOCKET=/var/run/mysql/mysql.sock
Homebrew でインストールされた MariaDB に問題がある場合は、再インストールすることで解決できる場合があります。
brew uninstall mariadb
brew install mariadb
macOS を再起動する
場合によっては、macOS を再起動することで問題が解決する可能性があります。
MariaDB のログファイル /var/log/mysql/error.log
を確認することで、問題の原因を特定できる場合があります。
- 上記の方法を実行する前に、必ずバックアップを取ってください。
- 上記の方法を実行しても問題が解決しない場合は、MySQL の公式ドキュメントまたはフォーラムで情報を探すことをお勧めします。
macos mariadb macos-big-sur