本文へジャンプします。

クラウド FAQ(よくあるご質問)

クラウド トップ>FAQ(よくあるご質問) > RDB > MySQLエンジンでタイムゾーンをUTCから他のものに変更することは可能ですか?

MySQLエンジンでタイムゾーンをUTCから他のものに変更することは可能ですか?

ニフティクラウドRDBのシステムユーザー(rdbadmin)が時刻に関する整合性を保つために、MySQLエンジンのDBサーバーのタイムゾーンはUTCに設定されており、これを変更することはできません。

ただし、下記の手順を実施することで、お客様に発行されたマスターユーザーや、お客様が追加で作成したユーザーにのみ特定のタイムゾーンを適用することが可能です。

ストアドプロシージャを作成する
rdbadmin以外のユーザーが接続している場合にタイムゾーンを他のものに変更するストアドプロシージャを作成します。

上記ストアドプロシージャ呼び出しをDBパラメーターグループのinit_connectに設定する。
init_connectパラメーターにストアドプロシージャ呼び出しを設定するとMySQLに接続するたびにストアドプロシージャが実行されるようになります。

下記に具体的な手順を説明します。
ここではタイムゾーンをUTCからAsia/Tokyoに変更してみます。

ストアドプロシージャの作成

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 'パスワード';

ストアドプロシージャをinit_connectパラメーターに設定

まず、新規にDBパラメーターグループを作成し、init_connectパラメーターに下記を設定します。

CALL shared.store_time_zone

次に、タイムゾーンを変更したいDBサーバーに上記DBパラメーターグループを適用し、さらに反映を行うためにDBサーバーの再起動を実行します。

以上でマスターユーザー(およびお客様が追加で作成したユーザー)のタイムゾーンがMySQL接続時にAsia/Tokyoに設定されるようになります。

ニフティクラウド FAQ内検索

FAQメニュー

  • ツイッターでフォローしてください
  • ニフティクラウド公式フェイスブックページ

推奨画面サイズ 1024×768 以上