MySQL
CentOS

CentOS7でMySQLのタイムゾーンを変更する

調べても出てこなかったので、備忘録的に残しておきます。

やりたいこと

CentOS 7.2 にインストールされたMySQLのタイムゾーンをJSTからUTCにしたい。

調べたら出てくる解決方法

my.cnf
$ cat /etc/my.cnf 
[mysqld_safe]
timezone = UTC

my.cnfが上記の状態でMySQLを再起動するが、変化なし。

はじめは原因が全くわからなかった

記述場所の問題やConfが上書きされている可能性を考えたが、全てクリア。

MySQLのタイムゾーン情報を取り込んでるし、

SET GLOBAL timezone=UTC

を実行すると変更されるので、起動時に設定が正しく反映されていないのはわかったんですが。

原因

調べてる過程で、mysqld_safeにオプション渡して起動してみようと思ったら、mysqld_safeがなかった。

なんでやねん、と思ってたらこんな情報を発見した。

https://teratail.com/questions/53026

記事内抜粋:
CentOS 7ではsystemdで管理されているため、mysqld_safeが使用できないようです。

これか・・・。

対応

というわけで、my.cnfで設定の記述場所を以下に変更。

my.cnf
$ cat /etc/my.cnf 
[mysqld]
timezone = UTC

mysqld_safeのオプションはmysqldに渡されているので、mysqldの設定に記述してしまえばよいのでは、的な発想。

mysql> show variables like '%time_zone%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| system_time_zone | JST   |
| time_zone        | UTC   |
+------------------+-------+
2 rows in set (0.00 sec)

いけたっぽい。

正しいのかは知らんけど。