Mysql
如何將 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)我可以將伺服器配置為將 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’ 命令選項沒有列出 ’time zone’ 選項
.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 會話變數?或者其他方式來設置會話時區?
default_time_zone=UTC
中使用my.cnf
。參考:https ://stackoverflow.com/questions/4562456/mysql-setting-time-zone-in-my-cnf-options-file
在
~/.my.cnf
:[mysql] init_command="SET time_zone='+0:00'"