正确配置mysql时区需结合启动参数、配置文件及时区表导入。1. 可通过mysqld –default-time-zone=’Asia/Shanghai’启动设置;2. 推荐在my.cnf的[mysqld]段添加default-time-zone=’Asia/Shanghai’;3. 若使用时区名,须执行mysql_tzinfo_to_sql导入系统时区数据至mysql.time_zone表;4. 重启服务后登录MySQL执行select @@global.time_zone, @@session.time_zone验证,确保返回预期时区值,生产环境应完成全部步骤以保障时区准确性。

MySQL 启动时正确配置时区非常重要,尤其在跨时区部署或应用依赖本地时间的场景下。直接通过启动命令设置时区虽有限制,但结合配置文件和系统环境可实现精准控制。以下是详细设置方法。
1. 使用 –default-time-zone 参数启动 MySQL
MySQL 支持在启动时通过 –default-time-zone 参数指定默认时区。该参数适用于 mysqld 直接启动方式。
– 命令示例:
mysqld --default-time-zone='+08:00'
或使用时区名称:
mysqld --default-time-zone='Asia/Shanghai'
说明:+08:00 表示东八区(北京时间),’Asia/Shanghai‘ 是标准时区名。若使用名称,需确保 MySQL 时区表已加载。
2. 在 my.cnf 配置文件中设置时区
更推荐的方式是在 MySQL 配置文件中永久设置时区,避免每次手动输入命令。
– 编辑 my.cnf 或 my.ini(linux 通常位于 /etc/my.cnf 或 /etc/mysql/my.cnf); – 在 [mysqld] 段落下添加:
[mysqld] default-time-zone = '+08:00'
或
default-time-zone = 'Asia/Shanghai'
保存后重启 MySQL 服务生效:
systemctl restart mysql
3. 确保时区表已加载
若使用时区名称(如 Asia/Shanghai),必须确保 mysql 数据库中的时区表有数据。
执行以下命令检查:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
该命令将系统时区信息导入 MySQL 的 mysql.time_zone 表中。导入后重启 MySQL 才能识别名称格式时区。
4. 验证时区设置是否生效
登录 MySQL 后运行以下命令查看当前时区:
SELECT @@global.time_zone, @@session.time_zone;
返回结果如 +08:00 或 Asia/Shanghai 即表示设置成功。
也可测试时间显示:
SELECT NOW();
确认输出时间与预期时区一致。
基本上就这些。启动命令可临时设置时区,但生产环境建议配合配置文件和时区表导入,确保稳定准确。不复杂但容易忽略的是时区表的初始化步骤。