修改系统和MySQL时区

时间:2023-03-08 17:33:12

修改时间时区比想象中要简单:

各版本系统通用的方法

# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# cp /usr/share/zoneinfo/UTC /etc/localtime

在 CentOS 7 中, 引入了一个叫 timedatectl 的设置设置程序.

用法很简单:

# timedatectl # 查看系统时间方面的各种状态
      Local time: 四 2014-12-25 10:52:10 CST
  Universal time: 四 2014-12-25 02:52:10 UTC
        RTC time: 四 2014-12-25 02:52:10
        Timezone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

# timedatectl list-timezones # 列出所有时区

# timedatectl set-local-rtc 1 # 将硬件时钟调整为与本地时钟一致

# timedatectl set-local-rtc 1 # 将硬件时钟调整为 UTC 时间

# timedatectl set-timezone Asia/Shanghai # 设置系统时区为上海

# timedatectl set-timezone UTC # 设置系统时区UTC

MySQL默认的时区是系统的时区或者UTC时区

查看当前MySQL的默认时区用 SELECT @@global.time_zone; 命令:

mysql> SELECT @@global.time_zone;
+--------------------+
| @@global.time_zone |
+--------------------+
| SYSTEM |
+--------------------+

显示 SYSTEM 说明当前使用的是操作系统时区,

mysql> SELECT @@global.system_time_zone;
+---------------------------+
| @@global.system_time_zone |
+---------------------------+
| UTC                       |
+---------------------------+

我们要设置MySQL的默认时区,以符合本地使用。

1 永久有效方法

修改 my.cnf 文件,加入如下2行:

default-time-zone='+08:00'          # 数据表默认时区

即设置MySQL默认时区为东八区。

删除该行就可恢复默认时区

2 仅当前会话有效方法

并不是每个时候我们都需要一致的时区,如果要在当前回话中设置独特的时区,

可以进入MySQL命令行,用命令设置当前回话的时区:

SET time_zone = "+08:00";