Docker 中 MySQL容器时区不对,导致插入的时间不准确

查询 MySQL 时区及当前时间

mysql> show variables like '%zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2019-10-15 05:37:07 |
+---------------------+
1 row in set
# 当前时间是  2019-10-15 13:37:07,差了 8 小时
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

由于 docker 容器中,不能直接修改文件,所以只能现在 Host 中改好后,再利用 docker cp 复制到容器中。

修改 mysql 配置文件,配置时区时区为:东八区

[root@localhost ~]# vi /etc/my.cnf
[mysqld]
# set time-zone
default-time-zone = '+8:00'
# does not care about letter case
lower_case_table_names=1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

复制配置文件到 docker mysql 容器中,MySQL 容器中的 配置文件在 /etc/mysql/mysql.conf.d/mysqld.cnf

# usage:docker cp docker cp [OPTIONS] SRC_PATH CONTAINER_NAME:DEST_PATH
docker cp /etc/my.cnf mysql5.7:/etc/mysql/mysql.conf.d/mysqld.cnf
  • 1
  • 2

再查询时区和时间,时间已经更改好了,是我们想要的。

mysql> show variables like '%zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | UTC    |
| time_zone        | +08:00 |
+------------------+--------+
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2019-10-15 13:47:07 |
+---------------------+
1 row in set
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

现在再插入数据,时间就正常了。

注:此方式仅适合解决因数据库时区不正确而导致的问题,更详细问题请参考 https://segmentfault.com/q/1010000010791397 中的讨论

posted on   Hi,王松柏  阅读(1637)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示