Vagrant上のCentOSにて、
ERROR 2002 (HY000): Can't connect
to local MySQL server
through socket '/var/lib/mysql/mysql.sock' (2)
というエラーを出してしまった。
mysqlの設定はlinuxだと大抵/etc/my.cnf
に書いてあるので、/etc/my.cnf
を確認。
/etc/my.cnf
[mysqld_safe]
log-error=/var/log/mysqld.log
error logが/var/log/mysqld.log
にあるとわかったので、そこを確認してみます。grep ERROR
により、ERROR箇所のみを抽出できます。less
コマンドでも良いんだけどね。
sudo cat /var/log/mysqld.log | grep ERROR
これで、ERRORメッセージを発見。
[ERROR] /usr/sbin/mysqld:
unknown variable 'character_set_server=utf8'
'character_set_server=utf8'
というunknown variableがありますよ、と。実は試し書きをしてゐて、本来character-set-server
と書くべきところをアンダースコアにしてました。mysqlの文法が正しく書いてあるドキュメントを読めればよかったのですが...
なので、とりあえず当該行を修正します。
sudo vi /etc/my.cnf # viでmy.cnfを開き当該行を修正
sudo service mysqld restart # mysqldの再起動
これにより解決、めでたしめでたし.
character-set-server
は何かというと、databaseのエンコーディングを決める変数でした。
ここがShift-JISとかだと、普通に文字化けしてしまうんですよね。ここをutf-8に直したいと思ってやったことが思わぬバグを生みました。