基于 Docker 部署 Mysql 的时区设置解决方案

时间:2025-03-31 08:51:09

LXL:

  • 分析原因后通过查找相关资料,以下两种方法亲测有效哦!!!

第一种方法:

  • 通过修改 Mysql 的 Variables 属性,临时修改,重启后无效。
# 进入容器
docker exec -it mysql1 /bin/bash

# 连接 mysql 服务
mysql -uroot -p

# 设置全局会话时区
set global time_zone = '+08:00';

# 设置当前会话时区
set session time_zone = '+08:00';

# 设置后查看 Mysql 时区配置属性。
show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | +08:00 |
+------------------+--------+

第二种方式:

  • 通过修改 Docker 容器所使用的时区,永久修改。
# 进入容器
docker exec -it mysql1 /bin/bash

# 下列方法 1~3 中任选其一即可:
# 1.强制生成 Asia/Shanghai 时区文件软链接
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# /Shanghai 软链接实际指向 PRC 文件,将其复制为 localtime 时区文件
cp /usr/share/zoneinfo/PRC /etc/localtime
# 3.通过 tzselect 命令,可选择 Beijing、HongKong 城市时区
tzselect 

# 修改后查看当前容器时区
date -R
Mon, 15 May 2023 23:05:49 +0800

# 连接 mysql 服务
mysql -uroot -p
# 设置后查看 Mysql 时区配置属性。
show variables like '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CST    |
| time_zone        | SYSTEM |
+------------------+--------+