搞定Docker MySQL时区变更!
描述
前期内部做了一个docker版本的mysql8.2,今天欣赏了一个小项目使用了数据库的timestamp,结果时间不对,相差8小时,这是妥妥的时区问题。
进入容器,查询时间,结果为UTC
~# docker exec -it 8f1df0e12e2 bash
bash-4.4# date -R Tue, 25 Mar 2025 07:34:39 +0000
解决方案
需要调整为Asia/Shanghai
查询数据库中的设置:
show variables like '%time_zone%';

通过修改 Docker 容器所使用的时区,永久修改。修改后必须重启容器,才能生效。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#强制生成 Asia/Shanghai 时区文件软链接
重启数据库容器
docker restart mysql8.2
重新查询数据库时区设置

ok,至此docker容器中的mysql已修改为+08:00时区,时间戳数据生成正常。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
