IT Learning

実践形式でITのお勉強

ReadyNAS

ReadyNASのMySQLプラグインの文字コード設定

投稿日:2020年5月13日 更新日:

目的

下記の記事で導入した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%";

以上

Related

-ReadyNAS
-,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です