AWS「CentOS7」DockerコンテナにMySQL-5.7をインストールしRDS接続後、日本語が文字化け(utf8)設定

前回、AmazonEC2「CentOS7」でDockerコンテナ作成後、MySQL-5.7をインストールし、EC2からRDSに接続してみるという記事を公開しましたが、RDSで作成したDBインスタンス(MySQL5.7.22)の初期設定で、日本語の文字化け対策として、utf8の設定をやっていきます。

Amazonマシンイメージ

「CentOS 7 (x86_64) – with Updates HVM」

AmazonEC2で作成した「CentOS7」でDockerコンテナ起動

AmazonEC2で作成した「CentOS7」にPuTTYを使用し接続。ターミナルウインドウを表示。

一般ユーザーからroot権限に切り替えます。

一般ユーザーからroot権限に切り替えます。

[root@ip-172-31-8-145 centos]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a201af084b6 python:3.7.5-buster “/bin/bash” 2 days ago Up 24 hours pythontest
765722c3531f centos:centos7 “/sbin/init” 3 days ago Up 3 days centos7

切り替え後、上記のコマンドでコンテナの稼働状況を確認し、MySQL-5.7をインストールしたDockerコンテナ(765722c3531f)に接続を行います。

[root@ip-172-31-8-145 centos]# docker exec -it 765722c3531f /bin/bash

接続する際は、上記のコマンドを入力します。入力後、Dockerコンテナに接続できます。

コマンド記入例:

mysql -h database-1.cueuuf18rkjv.ap-northeast-1.rds.amazonaws.com -P 3306 -u mymasteruser -p

接続後、MySQLクライアントを使用して、Amazon RDSで作成したDBインスタンスに接続しますので、上記のコマンド記入例を参考にしてコマンドを入力します。

Enter password:

ERROR 2003 (HY000): Can’t connect to MySQL server on ‘database-1.cueuuf18rkjv.ap-northeast-1.rds.amazonaws.com’ (110)

コマンドを入力すると、「EnterPassword:」が表示され、パスワードの入力を求められますので、MySQLのデータベースを作成する際に、設定したパスワードを入力し、ENTERキーを押します。

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3435
Server version: 5.7.22-log Source distribution

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

ENTERキーを押すとMysqlに接続ができます。接続後、

show variables like '%char%';

現在の文字コードを確認するため、上記のコードを入力し、ENTERキーを押します。

+————————–+——————————————-+
| Variable_name | Value |
+————————–+——————————————-+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.7.22.R5/share/charsets/ |
+————————–+——————————————-+
8 rows in set (0.01 sec)

押すと、文字コードを確認できますが、ほとんど「latin1」になっていて、これをutf8に変更します。

変更するために、一旦Mysqlの接続を終了します。

終了後、Amazon RDSのコンソールにアクセスします。

アクセス後、左側のメニューから「パラメータグループ」をクリックします。

クリックすると、「パラメータグループ」の画面になりますので、こちらで「パラメータグループの作成」ボタンをクリックします。

クリックすると、「パラメータグループの作成」画面になります。こちらで、「パラメータグループファミリー」は、RDSで作成したDBインスタンスが「MySQL5.7.22」なので、「mysql5.7」を選択し、「グループ名」は「自由に記入」、「説明」は「自由に記入」し、「作成」ボタンをクリックします。

クリックした後に、先程の「パラメータグループ」の画面に戻ると、作成されたパラメータグループが追加されていますので、こちらの「名前」をクリックします。

クリックすると、作成されたパラメータグループの詳細ページになりますので、こちらで虫眼鏡が表示されているデータ入力ボックスで、

character_set_client
character_set_connection
character_set_database
character_set_results
character_set_server

上記のパラメータを入力し、「値」を「utf8」に設定します。

設定後、

skip-character-set-client-handshake

上記のパラメータの「値」を「1」に設定します。

全ての設定が完了し、「変更の保存」ボタンをクリックし、変更を保存した後は、

左側のメニューから「データベース」をクリックします。

クリックすると、データベースの一覧が表示されますので、こちらで作成したDBインスタンスの識別子をクリックします。

クリックすると、作成したDBインスタンスの詳細ページになりますので、こちらで「変更」ボタンをクリックします。

クリックすると、「DB インスタンスの変更」画面になりますので、こちらで「データベースの設定」から「DBパラメータグループ」で先程作成したパラメータグループに変更します。

変更後、画面下の「次へ」ボタンをクリックします。

クリックすると、「次へ」ボタンが切り替わり、「変更のスケジュール」が表示され、「すぐに適応」にチェックを入れて、「DBインスタンスの変更」ボタンをクリックします。

クリック後、作成したDBインスタンスの詳細ページに戻ります。

戻った後は、「アクション」ボタンから「再起動」をクリックします。

クリックすると、「DB インスタンスの再起動」画面になりますので、「再起動」ボタンをクリックします。

クリックすると、作成したDBインスタンスの詳細ページに戻り、「概要」の「情報」が「再起動中」となって、しばらくすると「利用可能」に表示が変わります。これでパラメータグループの変更は完了となります。

完了後、再度MySQLに接続してみます。

show variables like '%char%';

再度、現在の文字コードを確認するため、上記のコードを入力し、ENTERキーを押します。

+————————–+——————————————-+
| 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 |
| character_sets_dir | /rdsdbbin/mysql-5.7.22.R5/share/charsets/ |
+————————–+——————————————-+
8 rows in set (0.01 sec)

ENTERキーを押すと、ほとんど「latin1」になっていたのが、「utf8」に変更されました。

備考

MySQLのmy.cnfを開いて「character-set-server=utf8」というコードを追加しなければいけないのかと考えて追加し、「service mysqld restart」でMySQLを再起動しようとしたが、CentOSなので、「mysql.server restart.」なのではないかと思いましたが、「service: command not found」というエラーが表示されてしまったので、いろいろ調べた結果、RDSで作成したDBインスタンスを変更しなければいけないことに気がついた。

コメント

タイトルとURLをコピーしました