MySQL time_zoneについて

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

同僚が、time_zoneの設定に苦戦していたので。。。
◆ time_zoneの確認・設定は下記になります。

【タイム ゾーンの確認】
SELECT @@global.time_zone, @@session.time_zone;

SHOW TABLES LIKE '%time_zone%';

※time_zone の初期値は、'SYSTEM' で、サーバとシステムの
タイム ゾーンが同じであることを示します。

【my.cnf】
default-time-zone='timezone'

※my.cnfで反映させる場合は、MySQLを再起動して下さい。

【クエリ】

SET GLOBAL time_zone = timezone;

 

◆ time_zoneの変更をしようとして、エラーになる場合、
タイム ゾーンの情報がロードされていない可能性がありますので、
下記コマンドで実行した上で、再度、time_zoneの変更をしてみて下さい。

例)「Asia/Tokyo」の場合
mysql_tzinfo_to_sql /usr/share/zoneinfo/Asia/Tokyo Asia/Tokyo | mysql -u root -p mysql

 

◆ セッション毎にタイムゾーンを設定したい場合についても記載しておきます。

※AWSのRDSとかですかね

my.cnfに “init_connect” パラメータを設定します。
下記の例は、rdsで始まるユーザー名の場合は「UTC」、それ以外のユーザーは「Asia/Tokyo」になります。

例1)
init_connect="SET SESSION time_zone = IF(POSITION('rds' IN CURRENT_USER()) = 1,'UTC','Asia/Tokyo')"

例2)
init_connect="SET SESSION time_zone = CASE WHEN POSITION('rds' IN CURRENT_USER()) = 1 THEN 'UTC' ELSE 'Asia/Tokyo' END;"

### init_connectパラメータの注意事項 ###
init_connectパラメータで指定したものは、SUPER権限をもつユーザーに対しては実行されません!

投稿者プロフィール

スカイブロガー

コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.