首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 時區設定全攻略:從系統預設到指定 +08:00

     編輯:MySQL 綜合教學

場景背景

某考勤系統部署於全球多個 AP 節點,業務要求所有時間統一按 UTC+8(東八區) 計算。因此必須在 MySQL 伺服器層面固定時區,避免應用層轉換帶來的不一致風險。

環境: RHEL 5.5 / MySQL 5.5.40

一、查看當前時區配置

mysql> SHOW VARIABLES LIKE '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | SYSTEM |
+------------------+--------+
  • system_time_zone:作業系統層面的時區(此處 CST 可能指 China Standard Time 或 Central Standard Time,易混淆)。
  • time_zone:MySQL 實例當前使用的時區,SYSTEM 表示跟隨作業系統。

二、修改方法

方法 1:修改配置檔 my.cnf(永久生效,需重啟)

[mysqld]
default-time-zone='+08:00'

保存後執行 service mysqld restart 或 systemctl restart mysqld。

方法 2:動態修改會話/全域變數(即時生效,重啟失效)

mysql> SET GLOBAL time_zone = '+08:00';  -- 需 SUPER 權限,影響新連線
mysql> SET time_zone = '+08:00';      -- 僅影響當前會話

三、驗證修改結果

mysql> SHOW VARIABLES LIKE '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | +08:00 |
+------------------+--------+

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2011-18-21 18:39:07 |
+---------------------+

此時 NOW()、CURTIME() 等時間函數均會按 +08:00 輸出。

四、最佳實踐建議

  1. 生產環境優先用方法 1,配置檔固化,避免重啟後時區重置導致數據不一致。
  2. 使用 +08:00 這類具體偏移量,而非 Asia/Shanghai 等命名時區,可避免系統時區資料庫缺失或版本差異導致的解析錯誤。
  3. 若系統原本為 SYSTEM,修改後 system_time_zone 仍顯示 CST,屬正常現象,以 time_zone 為準。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved