エラー2002(hy000)が発生しました。Can't connect to local MySQL server through socket '/var/run/mysqld/mysql.sock' (2)

以下のエラーが発生します。

エラー2002 (hy000)。Can't connect to local MySQL server through socket '/var/run/mysqld/mysql.sock' (2)

ubuntuでコマンドラインからmysqlを起動することはできたのですが

mysql stop/waiting
mysql start/running, process 17691

しかし、サイトにアクセスしようとすると、データベース接続エラーが発生し、また、mysql -u root -pでmysqlにアクセスしようとすると、上記のエラーが発生します。

エラーログを確認したところ、次のようなものがありました。

    131029 12:53:34 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be remo$
    131029 12:53:34 [Note] Plugin 'FEDERATED' is disabled.
    131029 12:53:34 InnoDB: The InnoDB memory heap is disabled
    131029 12:53:34 InnoDB: Mutexes and rw_locks use GCC atomic builtins
    131029 12:53:34 InnoDB: Compressed tables use zlib 1.2.3.4
    131029 12:53:34 InnoDB: Initializing buffer pool, size = 26.0G
    131029 12:53:36 InnoDB: Completed initialization of buffer pool
    131029 12:53:36 InnoDB: highest supported file format is Barracuda.
    131029 12:53:38  InnoDB: Waiting for the background threads to start
    131029 12:53:39 InnoDB: 5.5.34 started; log sequence number 5146431500
    131029 12:53:39 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
    131029 12:53:39 [Note]   - '0.0.0.0' resolves to '0.0.0.0';
    131029 12:53:39 [Note] Server socket created on IP: '0.0.0.0'.
    131029 12:53:39 [Note] Event Scheduler: Loaded 0 events
    131029 12:53:39 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.5.34-0ubuntu0.12.04.1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)

このエラーを見たのは初めてで、どうやって解決したらいいのかわからないので、少しでも参考にしてください。

ありがとうございます

UPDATE(更新

さて、glglgl'さんの解決策を試してみたところ、再起動後、エラーログに以下のような内容が記録されました。

    131029 13:17:36 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be remo$
    131029 13:17:36 [Note] Plugin 'FEDERATED' is disabled.
    131029 13:17:36 InnoDB: The InnoDB memory heap is disabled
    131029 13:17:36 InnoDB: Mutexes and rw_locks use GCC atomic builtins
    131029 13:17:36 InnoDB: Compressed tables use zlib 1.2.3.4
    131029 13:17:36 InnoDB: Initializing buffer pool, size = 26.0G
    131029 13:17:38 InnoDB: Completed initialization of buffer pool
    131029 13:17:38 InnoDB: highest supported file format is Barracuda.
    131029 13:17:40  InnoDB: Waiting for the background threads to start
    131029 13:17:41 InnoDB: 5.5.34 started; log sequence number 5146431500
    131029 13:17:41 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
    131029 13:17:41 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
    131029 13:17:41 [Note] Server socket created on IP: '127.0.0.1'.  
    131029 13:17:41 [Note] Event Scheduler: Loaded 0 events
    131029 13:17:41 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.5.34-0ubuntu0.12.04.1-log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)

私の問題は、Ubuntu 12.04でプロセスが実行されているかどうかを確認することで解決しました。

ps ax | grep mysql

すると、実行されていないという答えが返ってきたので、次のようにしました。

sudo service mysql start

を試してみたり

sudo /etc/init.d/mysql start
解説 (5)

私のシステムにxamppをインストールしたとき、同じ問題が発生しました。mysqlサーバは/var/run/mysqld/mysqld.sockを探しますが、mysql.sockファイルはxamppフォルダ内にあったため、以下のように使用しました。

 find / -name '*.sock'

を使ってmysql.sockファイルを探し、次に

ln -s  /var/run/mysqld/mysqld.sock

を使用して *.sock ファイルのリンクを取得し、その後 mysql を試したところ、エラーなく実行されました。 これであなたの問題が解決することを願っています。

ディレクトリが存在しない場合は、作成することを忘れないでください

解説 (1)

近くで見ると、その違いがよくわかります。

  • サーバは /var/run/mysqld/mysqld.sock で listen します。
  • クライアントは /var/run/mysqld/mysql.sock に接続しようとします。

どちらか一方を調整する必要があります。

解説 (2)