某所で動いているMySQLのDBにコンソール(mysqlコマンド)を使ってアクセスしたら日本語表示が文字化けしてしまった。
my.cnf(MySQLの設定ファイル)やアプリケーション側でUTF8を使用するよう指定されているので、アプリケーションで使用する分には問題ないのですが、メンテナンス等でコンソールから接続すると日本語などのマルチバイト文字が文字化けして、コンテンツがよくわからん、という症状。
ちなみにMySQLのバージョンは5.0系。
mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+--------+ 7 rows in set (0.00 sec)
こんな感じだった。my.cnfの[mysqld]の項で、
default-character-set = utf8
↑は設定してあったので、以下の項を追記した。
skip-character-set-client-handshake
こいつを使うと、サーバのキャラクタセットを優先してくれるらしい。
クライアント情報を無視して、サーバのデフォルトのキャラクタ セットを使用するには、--skip-character-set-client-handshake を使用する (MySQL が MySQL 4.0. のように動作するようにする。)
MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.3 サーバーコマンドオプション
で、設定後、確認したところ、、、
mysql> SHOW VARIABLES LIKE 'character\_set\_%'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | +--------------------------+--------+ 7 rows in set (0.00 sec)
となっており、無事コンソール接続時の日本語表示の文字化けは解決。