首先需导入时区表数据并设置默认时区。从联网服务器导出mysql.time_zone相关表,复制到离线环境后导入,再通过SET GLOBAL time_zone='Asia/Shanghai'或在my.cnf中配置default-time-zone='+8:00',最后重启MySQL服务使设置生效,确保时间字段正确。

MySQL 离线安装后,时区设置不正确会导致时间字段(如 DATETIME 和 TIMESTAMP)出现偏差,影响业务逻辑。尤其在没有网络的环境中,系统无法自动同步时区信息,需手动配置。以下是离线环境下 MySQL 时区的配置与修改方法。
确认当前时区设置
登录 MySQL 后,执行以下命令查看当前时区:
SELECT @@global.time_zone, @@session.time_zone;SELECT NOW(), SYSDATE();
若返回结果为 SYSTEM 或 +00:00,说明未正确设置本地时区。
导入时区表数据(关键步骤)
MySQL 使用 mysql.time_zone% 系列表存储时区信息,默认为空。离线环境需手动导入这些数据。
操作步骤如下:
- 从一台已联网且时区正常的 MySQL 服务器导出时区数据:
- 将生成的 timezone.sql 文件复制到目标离线服务器。
- 登录 MySQL,执行导入:
注意:必须导入到 mysql 库中,否则无效。
设置全局和会话时区
导入时区表后,可设置时区为东八区(如 Asia/Shanghai):
SET time_zone = 'Asia/Shanghai';
也可在配置文件中永久生效。
修改 my.cnf 配置文件(推荐)
编辑 MySQL 配置文件(通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf),在 [mysqld] 段添加:
[mysqld]default-time-zone = '+8:00'
# 或使用命名时区(需确保时区表已导入)
# default-time-zone = 'Asia/Shanghai'
保存后重启 MySQL 服务:
systemctl restart mysqld重启后再次查询时区,确认已生效。
基本上就这些。只要导入了时区表,并在配置中指定 default-time-zone,离线安装的 MySQL 就能正确处理本地时间。注意避免仅依赖 SYSTEM,防止跨平台时间错乱。










