正确设置mysql时区可避免时间偏差,建议在配置文件中设置default-time-zone=’+8:00’或’Asia/Shanghai’并重启服务,确保时区数据已导入,保持数据库与应用服务器时区一致。

在搭建 MySQL 数据库环境时,正确设置时区非常重要,尤其是涉及时间字段(如 DATETIME 和 timestamp)的存储与显示。MySQL 默认使用系统时区,但建议显式配置以避免跨平台或部署时出现时间偏差。
查看当前时区设置
连接到 MySQL 后,执行以下命令查看当前时区:
select @@global.time_zone, @@session.time_zone;
返回结果可能为 SYSTEM、+00:00 或具体的时区名称(如 Asia/Shanghai)。若为 SYSTEM,则表示使用操作系统时区。
方法一:通过配置文件设置(推荐)
修改 MySQL 配置文件,在启动时永久生效。
default-time-zone = ‘+8:00’
或使用命名时区(需时区表已加载):
default-time-zone = ‘Asia/Shanghai’
保存后重启 MySQL 服务使配置生效。
方法二:运行时动态设置
可在不重启服务的情况下临时设置全局时区:
SET GLOBAL time_zone = ‘+8:00’;
或使用命名时区:
SET GLOBAL time_zone = ‘Asia/Shanghai’;
注意:此设置在服务重启后会失效,适用于测试或临时调整。
补充:加载命名时区支持
若使用 Asia/Shanghai 等名称时报错,需确保时区表已初始化:
- 执行命令导入系统时区数据:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
该命令将操作系统时区信息导入 MySQL 的 mysql 系统数据库中。
基本上就这些。只要在配置文件中设置 default-time-zone 并确保时区数据可用,就能稳定使用东八区时间。开发和部署时保持数据库与应用服务器时区一致,可避免多数时间相关问题。


