目的
ローカル開発環境とサービスが稼働しているRDSとの間で、タイムゾーンの差異をなくす。
環境
- Mac OS - 10.13.4
- MySQL 5.7.15
MySQLのタイムゾーンの確認の仕方
sql
show variables like '%time_zone%';
MacのMySQLのデフォルトのタイムゾーン
sql
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | JST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.00 sec)
AWSのRDSのMySQLのタイムゾーン
sql
mysql> show variables like '%time_zone%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| system_time_zone | UTC |
| time_zone | UTC |
+------------------+-------+
2 rows in set (0.07 sec)
ということで、system_time_zone
と time_zone
がUTCになるように設定ファイルを設定する。
ローカルにタイムゾーン情報を読み込む
設定の前に、下記コマンドでタイムゾーン情報を読み込む。
console
$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
MacのMySQLの設定ファイルを書く
設定ファイルの読み込まれる順番は下記のコマンドで確認できる。
console
$ mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
左から順番に読み込まれ、上書きされていく。
ということで、~/.my.cnf
に設定ファイルを配置する。
console
$ vi ~/.my.cnf
下記の内容で保存する。
~/.my.cnf
[mysqld_safe]
timezone = UTC
[mysqld]
default_time_zone = UTC
[mysqld_safe]
の記述は system_time_zone
をUTCに、[mysqld]
の記述は time_zone
をUTCに設定する。
設定を適用させるためにMySQLを再起動する。
console
$ mysql.server restart
Shutting down MySQL
.. SUCCESS!
Starting MySQL
. SUCCESS!
設定適用後のMacのMySQLのタイムゾーン
sql
mysql> show variables like '%time_zone%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| system_time_zone | UTC |
| time_zone | UTC |
+------------------+-------+
2 rows in set (0.00 sec)
目的を達成できた🎉