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';
⚠️ 注意事项
-
使用
Asia/Shanghai
需要确保 MySQL 时区表已导入,否则可能报错。 可通过以下命令导入:mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
-
如果不确定是否有时区表,建议直接使用
+08:00
,更为保险。
✅ 总结
- 查看时区:
SHOW VARIABLES LIKE '%time_zone%';
- 临时修改:
SET time_zone = '+08:00';
- 永久修改:在
my.cnf
配置文件中添加default-time-zone = '+08:00'
这样就能让 MySQL 始终运行在 中国时区(东八区),避免时间偏差问题。