MySQLサーバーに接続できないときのエラーメッセージ "ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)" の原因と解決方法

2024-04-02

エラーメッセージ "ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)" の原因と解決方法

MySQLサーバーが起動していない場合、接続できません。まずは、MySQLサーバーが起動しているかどうかを確認しましょう。

確認方法:

  • コマンドライン
systemctl status mysql

結果例:

● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2024-03-24 23:02:10 JST; 1min 22s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/8.0/en/mysqld.html
  Process: 23456 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 23457 (mysqld)
   CGroup: /system.slice/mysql.service
           ├─23457 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --log-error=/var/log/mysql/error.log
           └─23458 /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid

上記のように、Active: active (running) と表示されていれば、MySQLサーバーは起動しています。

解決方法:

MySQLサーバーが起動していない場合は、以下のコマンドで起動できます。

sudo systemctl start mysql

MySQLソケットファイルが存在しない、またはアクセス権限がない

MySQLサーバーは、ソケットファイルと呼ばれるファイルを使用してクライアントとの通信を行います。このファイルが存在しない、またはアクセス権限がない場合、接続できません。

  • ソケットファイルの存在確認
ls /var/run/mysqld/mysqld.sock
/var/run/mysqld/mysqld.sock

上記のように、mysqld.sock ファイルが存在すれば問題ありません。

ls -l /var/run/mysqld/mysqld.sock
srwxrwxrwx 1 mysql mysql 0 3月 24 23:02 /var/run/mysqld/mysqld.sock

上記のように、srwxrwxrwx と表示されていれば、すべてのユーザーが読み書きできる権限が設定されています。

sudo touch /var/run/mysqld/mysqld.sock
sudo chown mysql:mysql /var/run/mysqld/mysqld.sock
sudo chmod 666 /var/run/mysqld/mysqld.sock

MySQLサーバーの設定ファイル my.cnf に誤りがある場合、接続できません。

  • my.cnf ファイルの場所は、以下のコマンドで確認できます。
mysqld --verbose --help | grep -e '^--defaults-file='
--defaults-file=/etc/mysql/mysql.conf.d/mysqld.cnf
  • 設定ファイルの内容を確認し、誤りがないか確認します。

設定ファイルに誤りがある場合は、修正してMySQLサーバーを再起動します。

上記以外にも、ファイアウォールなどの設定が原因で接続できない場合があります。

  • [ERROR 2002



使用しているプログラミング言語

例:PHP、Python、Javaなど

接続しようとしているデータベースの情報

  • データベースの種類:MySQL、MariaDBなど
  • ホスト名:localhost、127.0.0.1など
  • ポート番号:3306など
  • データベース名:testなど
  • ユーザー名:rootなど
  • パスワード:passwordなど

実行したい処理

  • データの検索

上記の情報が揃えば、具体的なサンプルコードを作成できます。




LAMP環境でパスワードを忘れた場合の対処方法

MySQLコマンドラインツールを使用する

MySQLサーバーを停止する

sudo systemctl stop mysql

mysqld_safeコマンドを使用する

sudo mysqld_safe --skip-grant-tables &

パスワード変更

mysql
USE mysql;
UPDATE user SET password=PASSWORD('新しいパスワード') WHERE User='root';
FLUSH PRIVILEGES;
sudo systemctl start mysql

リカバリキーを使用する

MySQLインストール時に作成されたリカバリキーを使用してパスワードをリセットできます。

リカバリキーの確認

grep 'password' /etc/mysql/mysql.conf.d/mysqld.cnf

リカバリキーを使用してパスワードをリセットする

mysqld --init-file=/path/to/recovery-file
mysql
USE mysql;
UPDATE user SET password=PASSWORD('新しいパスワード') WHERE User='root';
FLUSH PRIVILEGES;

データベース管理ツールを使用する

phpMyAdminなどのデータベース管理ツールを使用してパスワードをリセットできます。

ブラウザで http://localhost/phpmyadmin などと入力して、データベース管理ツールにアクセスします。

  • ユーザータブを選択します。
  • 編集ボタンをクリックします。
  • パスワード欄に新しいパスワードを入力します。

その他

上記以外にも、OSや環境によって様々な方法があります。詳細は、以下の参考資料を参照してください。

上記の方法でうまくいかない場合は、専門家に相談することをおすすめします。


mysql lamp forgot-password


MySQL DATETIMEカラムのデフォルト値設定:CURRENT_TIMESTAMP vs 定数

MySQLのDATETIMEカラムにデフォルト値を設定するには、以下の2つの方法があります。定数をデフォルト値として指定するCURRENT_TIMESTAMPまたはCURRENT_DATE関数を使用する上記のように、DEFAULT句で定数を指定することで、デフォルト値を設定できます。...


【MySQL初心者向け】LIMITとOFFSETで結果セットを自在に操作:詳細解説とサンプルコード集

MySQLでクエリを実行する際、結果セット全体を取得したい場合もあれば、特定の行のみを抽出したい場合もあります。そのような場合に役立つのが、LIMITとOFFSETというキーワードです。本記事では、LIMITとOFFSETを組み合わせることで、MySQLからどのような行が返されるのかについて、詳細かつ分かりやすく解説します。...


最新版へのアップグレードもスムーズに!MySQL 5.7からMySQL 8への移行ガイド

最初に、MySQLサービスを停止する必要があります。以下のコマンドを実行してください。次に、以下のコマンドを使用して、MySQL関連のパッケージを削除します。このコマンドは、MySQLサーバーとその関連ファイル、データベース、および設定ファイルをすべて削除します。...


迷ったらコレ!CREATE TABLEスクリプト生成方法3選(PHPMyAdmin、SQLクエリ、コマンドライン)

PHPMyAdminは、MySQLデータベースを管理するためのWebベースのツールです。既存のテーブルのCREATE TABLEスクリプトを生成することは、データベースの構造をバックアップしたり、別のデータベースに移行したりする際に役立ちます。...


MySQL SELECT INTO OUTFILEで発生する「ファイルが存在する」と「ファイルが存在しない」の二重性問題:詳細解説と解決策

MySQLでSELECT INTO OUTFILEクエリを実行する場合、出力ファイルに関する2つの相反するエラーが発生することがあります。ファイルが存在するエラー: すでに同名のファイルが存在するため、書き込みできないというエラーこの一見矛盾する状況は、様々な要因によって引き起こされます。本記事では、この問題の根本原因、詳細な分析、解決策を分かりやすく解説します。...


SQL SQL SQL SQL Amazon で見る



ローカル MySQL サーバーに接続できない?エラー "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)" の原因と解決方法を徹底解説!初心者でも安心!

このエラーは、ローカル MySQL サーバーに接続できないことを示しています。原因はいくつか考えられますが、主に以下のいずれかです。MySQL サーバーが起動していないソケットファイルが存在しない、またはアクセス権限が不正クライアントとサーバーの接続設定が一致していない


【決定版】PHPとMySQLで発生する「Lost connection to MySQL server at 'reading initial communication packet', system error: 0」エラーの解決策

このエラーの原因はいくつか考えられます。MySQLサーバーが起動していない: 最も一般的な原因は、MySQLサーバーが起動していないことです。サーバーが起動していることを確認してください。ネットワークの問題: MySQLサーバーとPHPアプリケーション間でネットワーク接続の問題が発生している可能性があります。ファイアウォール設定やネットワーク設定を確認してください。