MySQL 查看与修改时区(切换到中国时区)

发表于 2025-09-19 17:56:59 分类于 默认分类 阅读量 61

MySQL 查看与修改时区(切换到中国时区)

在使用 MySQL 时,时区问题经常会导致数据库存储的时间和本地时间不一致。本文将介绍如何在 MySQL 中 查看当前时区,并将其修改为 中国时区(东八区,Asia/Shanghai)


🔍 查看当前时区

执行以下命令:

-- 查看当前时区配置
SHOW VARIABLES LIKE '%time_zone%';

-- 查看当前时间
SELECT NOW();

结果说明:

  • system_time_zone:MySQL 启动时从操作系统读取的时区
  • time_zone:当前 MySQL 会话时区(默认通常为 SYSTEM,即跟随操作系统)

🔧 临时修改时区(会话级别)

如果只需要临时修改,可以使用:

-- 设置为中国时区(东八区)
SET time_zone = '+08:00';

-- 或者
SET time_zone = 'Asia/Shanghai';

验证修改:

SELECT NOW();

⚠️ 注意:这种方式 仅对当前会话有效,断开连接后会恢复原时区。


🛠️ 永久修改 MySQL 时区

方法 1:修改配置文件

编辑 MySQL 配置文件(如 /etc/my.cnf/etc/mysql/my.cnf):

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

或者:

[mysqld]
default-time-zone = 'Asia/Shanghai'

保存后,重启 MySQL:

sudo systemctl restart mysql

方法 2:设置全局时区

如果不方便修改配置文件,可以在 MySQL 中直接设置全局时区:

SET GLOBAL time_zone = '+08:00';

⚠️ 注意事项

  1. 使用 Asia/Shanghai 需要确保 MySQL 时区表已导入,否则可能报错。 可通过以下命令导入:

    mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
    
  2. 如果不确定是否有时区表,建议直接使用 +08:00,更为保险。


✅ 总结

  • 查看时区SHOW VARIABLES LIKE '%time_zone%';
  • 临时修改SET time_zone = '+08:00';
  • 永久修改:在 my.cnf 配置文件中添加 default-time-zone = '+08:00'

这样就能让 MySQL 始终运行在 中国时区(东八区),避免时间偏差问题。