- 先来排查服务器时间对不对
date
如果服务器时间是对的,那么现在开始排查mysql的时区对不对
- 排查docker中mysql的时区
# 查看mysql的容器id
docker ps
# 进入容器,进入mysql环境
docker exec -it dd1c date
发现mysql容器的时间不对,时区为UTC,和想要的时间相差了8小时
# 进入mysql
docker exec -it dd1c bash
# 登录mysql
mysql -uroot -p
// 设置全局
set global time_zone = '+8:00';
// 立即生效
flush privileges;
// 查看mysql的时区,此时的
show variables like '%time_zone%';
# 此时可以看见
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | UTC |
| time_zone | +08:00 |
+------------------+--------+
2 rows in set (0.00 sec)
# 此时的时间,就是正常的时间
select now();
+---------------------+
| now() |
+---------------------+
| 2022-03-18 16:36:57 |
+---------------------+
1 row in set (0.00 sec)
时区:
UTC:Universal Time Coordinator协调世界时间
GMT:Greenwich Mean Time 格林尼治平时间
CST:美国中部时间、澳大利亚中部时间、中国标椎时间、古巴标准时间
关系:
CST=UTC/GMT +8 小时