Ubuntu 12.04 でMySQL5.5の文字コード設定

/etc/mysql/my.cnfに以下を記述

[mysqld] 
character-set-server=utf8
skip-character-set-client-handshake

MySQLをリスタート

$ sudo /etc/init.d/mysql restart

MySQL5.4まではmy.cnfには以下のように記述していた。

[mysqld]
default-character-set=utf8

MySQL5.5で同じように記述すると、MySQLの起動に失敗する。

$ sudo /etc/init.d/mysql restart
[sudo] password for kougasha: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
start: Job failed to start

MySQLが起動しないままmysqlコマンドを使うとこんな感じのエラーが出る。

$ mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

これはMySQL5.5でdefault-character-setのサーバーオプションが廃止されたから。(正確にはMySQL5.5.29より後のリリースだと思うけど、今後復活することはないだろうから書き換えとけばいいと思う。)


参考URL