web-dev-qa-db-ja.com

MySQL(Linux mysqlコマンド)セッションのタイムゾーンを永続的にUTCに設定する方法は?

Linux(CentOS、最近のリリース)でMySQLを使用しています。 MySQLシステム変数time_zoneにUTCを反映させたい。

(コマンドラインツールmysqlを使用して)MySQLセッションを開始し、タイムゾーン設定を確認すると、次のように表示されます。

mysql> select @session.time_zone ;
+--------------------+
| @session.time_zone |
+--------------------+
| NULL               |
+--------------------+
1 row in set (0.00 sec)

MySQL Set UTC time as default timestamp を参照)serverを構成して、UTCをデフォルトのタイムゾーンにすることができます。 クライアントセッションをデフォルトとしてUTCに設定する必要があります。

上記のページには、SQL構文で次のようにMySQLシステム変数を設定できると記載されています。

mysql> set @session.time_zone="+0:00";

これにより、セッションのタイムゾーンがローカル(SYSTEM)のタイムゾーンになります。

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

私がしたいのは、.my.cnfの設定のように、タイムゾーンをユーザーの設定の一種として設定することです。

問題は、 MySQL 'mysql'コマンドオプション.my.cnfの「タイムゾーン」オプションを一覧表示せず、(もちろん、とにかく試してみなければならなかった)

 time_zone="+0:00"

私の$HOME/.my.cnfファイルでメッセージにつながる

 mysql: unknown variable 'time_zone=+0.00'

TZ環境変数を設定してみましたが、影響はありません。

上記のStackExchangeリファレンスが言うように、私が見つけた唯一の効果的な方法は、SQLコマンドを発行することです。

mysql> select @session.time_zone ;
+--------------------+
| @session.time_zone |
+--------------------+
| NULL               |
+--------------------+
1 row in set (0.00 sec)

mysql> set @session.time_zone="+0:00";
Query OK, 0 rows affected (0.00 sec)

mysql> select @session.time_zone ;
+--------------------+
| @session.time_zone |
+--------------------+
| +0:00              |
+--------------------+
1 row in set (0.00 sec)

だから...

私の質問は、MySQLセッション変数を設定するための他のメカニズムがあるのでしょうか?またはセッションのタイムゾーンを設定する他の方法?

4
rich p
2
Gea-Suan Lin

~/.my.cnf

[mysql]
init_command="SET time_zone='+0:00'"
0
dolmen