MySQL时区设置和常见问题

2024-07-30 22:54:00
丁国栋
原创 155
摘要:本文记录了MySQL时区的设置和一些常见问题。

今天在使用手机号登录时发现明明是有效的验证码却提示过期,排查后发现是数据库的时区不对,导致判断验证码过期的逻辑有问题。

查询时区:

select @@GLOBAL.time_zone,@@SESSION.time_zone;
select @@time_zone;

临时解决办法(无需重启,但重启后失效)

show variables like '%time_zone%';
set global time_zone = '+8:00';

其中,+8:00可以修改为SYSTEM,UTC如果取值为SYSTEM则等同于system_time_zone变量的值,这个是MySQL启动时从系统取的系统时区设置。

长期解决办法(重启后生效)

修改MySQL的配置文件,添加以下:


[mysqld]
default-time-zone = +08:00
重启MySQL生效。


值得注意的是CST这个特殊名字,在不同的语境中含义不同,它可能是China Standard Time(GMT+8),也可能是 Central Standard Time (USA)(GMT-6),所以尽量不用CST表示+08:00

发表评论
博客分类