ReadyNASのMySQLプラグインの文字コード設定
目的
下記の記事で導入したReadyNASのMySQLプラグインですが、文字コードがデフォルトの状態で日本語が文字化けをしたので、文字コードの設定を行います。
以前と同様SSHを使用して設定ファイルを触ります。
環境
ReadyNAS 6.10.3
MySQL Server 1.0.1 (プラグイン)
Step1 : 現状の文字コード確認
まずはデフォルトの文字コードを確認します。
SSHでReadyNASへ接続し、mysqlからデフォルトの文字コードを確認します。
$ mysql
mysql> show variables like "chara%";
結果
character_set_databaseとcharacter_serverがlatin1になっていました。これが原因でutf8のデータが文字化けが発生していた様子です。
Step2 : my.cnfの変更
ReadyNASのようなLinux上のMySQLサーバの場合、my.cnfという設定ファイルで文字コードの設定ができます。ReadyNASのMySQLサーバーのcnfファイルは/etc/mysql/の配下にありました。
SSHからrootでログインし、以下の通りファイルを開きます。
# vi /etc/mysql/my.cnf
utf8を例にした設定例は以下の通りです。mysqldへの設定はdefault-character-setではエラーがでて、character-set-serverの設定ではうまくいきました。理由はわかりませんが。
[client]
#clientの最後尾に追記
default-character-set=utf8
[mysqld]
#mysqldの最後尾に追記
character-set-server=utf8
[mysql]
#mysqlの最後尾に追記
default-character-set=utf8
設定ファイルを編集したらmysqlを再起動します。
# systemctl restart mysql
Step3 : 文字コードが変更されていることの確認
mysqlの再起動後、再度mysqlから文字コードを確認してみてください。
mysql > show variables like "chara%";
結果
先ほどlatin1だった箇所がすべてutf8になりました。
注意点
私の場合、この設定を行ったあともテーブルのデータの文字化けが治らずに少し悩みました。原因としては上記の文字コード設定を行う前に作成したデータベースインスタンスは上記だけでは変更が反映されないことが分かりました。対処として一旦DBインスタンスをDROPしてから再度テーブル定義してデータを入れなたところ、無事に文字化けは無くなりました。
文字化けが治らない場合は、一旦データベースを指定した上で文字コードを調べてみると良いと思います。以下のコマンドで調べることができます。
mysql > use your_db;
mysql > show variables like "chara%";
以上