ニフクラRDBのシステムユーザー(rdbadmin)が時刻に関する整合性を保つために、MySQLエンジンのDBサーバーのタイムゾーンはUTCに設定されており、これを変更することはできません。
ただし、下記の手順を実施することで、お客様に発行されたマスターユーザーや、お客様が追加で作成したユーザーにのみ特定のタイムゾーンを適用することが可能です。
ストアドプロシージャを作成する
rdbadmin以外のユーザーが接続している場合にタイムゾーンを他のものに変更するストアドプロシージャを作成します。
上記ストアドプロシージャ呼び出しをDBパラメーターグループのinit_connectに設定する。
init_connectパラメーターにストアドプロシージャ呼び出しを設定するとMySQLに接続するたびにストアドプロシージャが実行されるようになります。
ストアドプロシージャの作成
MySQLにログインし、下記コマンドでデータベースおよびストアドプロシージャを作成します。
# ストアドプロシージャを紐付けるためのデータベース作成(名前はshared以外でも問題ありません)
mysql< CREATE DATABASE shared
Query OK, 1 row affected (0.01 sec)
# ストアドプロシージャの作成
mysql< DELIMITER | mysql< CREATE PROCEDURE shared.`store_time_zone`()
-< IF NOT (POSITION('rdbadmin@' IN CURRENT_USER()) = 1) THEN
-< SET SESSION time_zone = 'Asia/Tokyo';
-< END IF | Query OK, 0 row affected (0.01 sec)
# デリミタを|から;に戻しておく
mysql< DELIMITER ;
なお、マスターユーザー以外の新規に追加したユーザーでストアドプロシージャを作成するにはマスターユーザーでログインし下記のような権限付与を行う必要があります。
GRANT ALL ON shared.* to ユーザー名@'%' identified by 'パスワード';
CALL shared.store_time_zone
なお、タイムゾーンを変更後、MySQLの接続にはストアドプロシージャの実行権限が必要となります。
マスターユーザーでログインし、下記のような権限付与を行ってください。