如何修改mysql数据库的时区

Mysql
作者:dulucy
发布时间:2025-04-26 02:01:32
如何修改mysql数据库的时区

前言

由于在linux服务器上安装时mysql数据库,没有考虑到要设置时区,导致使用的是默认时区,使用 now() 插入时间时,时间总是少了8个小时,因此需要重新设置mysql的时区。


一、原因

虽然通过 date 在linux查看的时间是北京时间,使用 SHOW VARIABLES LIKE '%time_zone%'; 查看mysql数据库的时区是使用操作系统的时间,但实际数据库的时间不是北京时间 image.png 在设置时区时,你应该避免使用SYSTEM值,因为它可能会导致与操作系统时区的混淆。例如,CST可以表示中国标准时间(UTC+8),但在Java中可能被解释为美国中部标准时间(UTC-6)。为了避免混淆,建议直接使用如+08:00这样的偏移量来设置时区


二、解决办法

  1. 通过mysql命令行模式下动态修改

    • 查看当前时区: 你可以通过执行SHOW VARIABLES LIKE '%time_zone%'来查看当前的全局时区和会话时区。如果time_zone的值是SYSTEM,则表示MySQL将采用操作系统的时区设置。 SHOW VARIABLES LIKE '%time_zone%';

    • 设置会话时区: 使用SET time_zone = '+8:00'可以设置当前会话的时区,这个设置仅对当前会话有效,不会影响其他会话或者全局设置。 SET time_zone = '+8:00';

    • 设置全局时区: 使用SET GLOBAL time_zone = '+8:00'可以设置全局时区,这将影响新的会话。已经存在的会话需要重新连接才能应用新的时区设置。 SET GLOBAL time_zone = '+8:00'; 为了使设置立即生效,你可能需要执行FLUSH PRIVILEGES,但这并不总是必要的。

  2. 通过修改my.cnf配置文件来修改时区
    如果你希望MySQL的时区设置在服务重启后仍然保持,你可以在MySQL的配置文件中设置时区。通常这个文件被称为my.cnf或my.ini,位于MySQL服务器的安装目录下。

    • 编辑配置文件: 在[mysqld]部分添加default-time-zone='+8:00'来设置默认时区。 [mysqld] default-time-zone='+8:00'

    • 重启MySQL服务: 修改配置文件后,你需要重启MySQL服务来使更改生效。 service mysql restart


参考

  1. MySql修改时区的三种方法_如何修改mysql时区-CSDN博客