海の響きを懐かしむ

観たもの聴いたもの読んだものの記録と、日記など

MySQLでmysqld.sockまわりでエラーがでた場合の対処法

【reference】

  1. http://www.jabberdoc.org/AdminGuide
  2. http://devdoodles.wordpress.com/2009/03/19/installing-jabberd2-and-mysql-on-ubuntu-810/
  3. http://dev.mysql.com/doc/refman/4.1/ja/can-not-connect-to-server.html

Ubuntu上でMySQLをいじっていて、いろいろ不慣れなままチュートリアルをまじめに読まずに起動/停止を繰り返していたら、

  • ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

というエラーがでた。以下にその対処法を示す。


まず[3]によると、考えられうる原因は以下の二つ。

  1. deamonが正しく起動していない
  2. socketファイルがある場所が指定されていない/socketファイルが消滅している

結果的な原因は両方にまたいでいて、daemonが正常終了せずにsocketファイルが残っていたことが理由だった。


#[1][2]のとおり、jabberd2からMySQLを用いる場合、
#socketファイルがある場所から、実際にdeamonが見に行く場所へとシンボリックリンクを貼る必要がある。
#この場所は/etc/mysql/my.conf内で変更可能。

  • sudo ln -s var/run/mysqld/mysqld.sock /tmp/mysql.sock


#また、deamonが起動しているかどうかは、以下のように調べる。

  • ps aux | grep mysqld


対処として、MySQLを停止し、socketファイルを削除し、再起動を行った。
(socketファイルがない場合、起動すると自動的に生成される)
以下をroot or sudoで実行する。

  • /etc/init.d/mysql stop
  • rm -f /var/run/mysqld/mysqld.sock
  • rm -f /tmp/mysql.sock
  • /etc/init.d/mysql start

これで無事、データベースサーバにアクセスできるようになった。