【Amazon Aurora】日本の環境で快適に使うための初期設定手順 ~ 文字コード、タイムゾーン、パブリックアクセス ~


わずか数分でデータベースを作成、起動できてしまうAmazon RDS。
とっても便利ですが、デフォルトのままだと文字化けしてしまったり、時刻がズレていたりと歯がゆい思いをすることになりかねません。
今回は、Amazon Auroraを日本の環境(日本時間、日本語)で快適に使うために、やっておきたい初期設定手順をまとめてみました。

環境

  • Amazon Aurora(MySQL5.7)2.07.2(「開発/テスト」用)
  • クライアントOS:Windows10

手順

1. Amazon Aurora DBクラスターの作成

Amazon Aurora DBクラスターの作成に記載の手順を参照しつつ、作成します。
公式サイト(リンク先)に詳しく書かれているので、ここでは割愛します。

2. DBクラスターのパラメータグループの作成

Amazon Aurora(MySQL5.7)の場合、デフォルトのパラメータグループ、DB クラスターのパラメータグループの設定は以下のようになっています。

タイプ 名前
パラメータグループ default.aurora-mysql5.7
DB クラスターのパラメータグループ default.aurora-mysql5.7

これらデフォルトのパラメータグループの設定は変更できないので、別途パラメータグループを作成し、DBインスタンスに割り当てます。
今回は、DB クラスターのパラメータグループのみでOK!

以下の通り設定を進めていきます。

  1. AWS > RDSとアクセスしたら、左ペインにて、「パラメータグループ」をクリック。

  2. 「パラメータグループの作成」をクリック。

  3. タイプに「DB Cluster Parameter Group」(①)、グループ名(②)、説明(③)に任意の内容を入力し(入力自体は必須)、「作成」(④)をクリック。

  4. 作成したパラメータグループの名前をクリック。

  5. 検索ボックスに「character」と入力し(①)、「パラメータの編集」(②)をクリック。

  6. キャプチャのように「値」がセレクトリストになるので(①)、下記の表の通り編集して「変更の保存」をクリック(②)。

名前
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_results utf8mb4
character_set_server utf8mb4
time_zone(※) Asia/Tokyo

※time_zoneについては、検索ボックスにて別途「time_zone」と入力&検索する

3. DBインスタンスへのDBクラスターのパラメータグループ適用(+パブリックアクセスの有効化)

手順2で新しく作成したDBクラスターのパラメータグループをDBインスタンスに適用します。
また、外部から接続する場合、パブリックアクセスを有効にする必要があるので、こちらも合わせて設定しておきます。

  1. 左側ペインにて「データベース」をクリックし、対象のDBインスタンスを選択した後(②)、「変更」をクリック(③)。

  2. 変更ページが開くので、中ほどまでスクロールして、「ネットワーク&セキュリティ」の「パブリックアクセシビリティ」にて「はい」を選択する(パブリックアクセスの許可)。

  3. さらに下方にスクロールし、「データベースの設定」の「DBクラスターのパラメータグループ」にて作成したパラメータグループを選択。

  4. いちばん下までスクロールし、「次へ」をクリック。

  5. 画面遷移したら、「変更スケジュール」を「すぐに適用」に変更し(←重要!そのままだと、次回メンテナンスまで変更がが適用されません!)、「DBインスタンスの変更」をクリック。

4. アクセス許可設定の変更

手順3にて、外部からのアクセスが許可されましたが、そのままでは特定のIP以外接続できません。
以下の手順により、適切な接続元からのアクセスを許可します(今回は全てのIPアドレスからの接続を許可します)。

  1. RDSの左側ペインにて、「データベース」をクリックし(①)、対象のDBインスタンスをクリックします(②)。

  2. 画面下部に「接続とセキュリティ」が表示されたら、VPCセキュリティグループのリンクをクリック。

  3. セキュリティグループのページが開くので、「インバウンドルールの編集」をクリック。

  4. タイプが「MySQL/Aurora」となっている行の「ソース」で、「任意の場所」を選択し(①)、「ルールの保存」をクリック(②)。

5. 接続と設定の確認

手順4までで必要な設定は一通り完了ですが、クライアントPCから接続、設定(文字コード、タイムゾーン)がうまくできているか、確認しておきましょう。

  1. コマンドプロンプトを起動し、対象のDBインスタンスに接続します。
> mysql -h {エンドポイント} -P {ポート} -u {DBクラスター作成時に設定したユーザー名} -p

Enterを押すと、パスワードの入力を求められるので、DBクラスター作成時に設定したパスワードを入力します。
「エンドポイント」、「ポイント」には、RDSの左側ペイン「データベース」> 「対象のDBインスタンス」をクリックすると下部に現れる、「エンドポイント」(①)、「ポート」(②)を使用します。

2.接続ができたら文字コードの確認をしましょう。

MySQL> show variables like '%char%';

以下のような結果になっていればOKです。
もし変更が反映されないようなら、一度再起動してみてください。
(今回変更したパラメータは全てdynamicなので、再起動は不要なはずではあるのですが、、)

+--------------------------+------------------------------------------------------------------+
| Variable_name            | Value                                                            |
+--------------------------+------------------------------------------------------------------+
| character_set_client     | utf8mb4                                                          |
| character_set_connection | utf8mb4                                                          |
| character_set_database   | utf8mb4                                                          |
| character_set_filesystem | binary                                                           |
| character_set_results    | utf8mb4                                                          |
| character_set_server     | utf8mb4                                                          |
| character_set_system     | utf8                                                             |
| character_sets_dir       | /rdsdbbin/oscar-5.7.mysql_aurora.2.07.2.0.1106.0/share/charsets/ |
+--------------------------+------------------------------------------------------------------+

6. オマケ:データベースとテーブルの作成時

Amazon Aurora2系はMySQL5.7互換なので、CHARACTER SETをutf8mb4とした場合は、COLLATIONはutf8mb4_general_ciとなります(MySQL8.0では、utf8mb4_0900_ai_ci)。
utf8mb4_general_ciは、濁点半濁点(「゛」、「゜」)は区別しますが、大文字小文字、所謂絵文字を区別しないので、左記全部を区別するutf8mb4_binにしてデータベースを作成しておきましょう。

以下、例です。

create database `test-db1` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;

これで、対象のデータベースに作成されるテーブルも同じ設定となりますが、後々を考えるなら、以下のように設定を明記しておくとよいでしょう。

create table `test_table`(
  `id` int,
  `name` varchar(50)
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

終わりに

データベースやテーブルを作ってしまってからの設定変更はいろいろと厄介。。
作成直後にサクッと必要な設定を済ませて、不要な作業や心配をなくしないところ。
(MySQL等を各々でインストールした場合もそうですが)

あと、使っていない時はDBインスタンスの停止 or 削除を忘れずに。

参考