zoukankan      html  css  js  c++  java
  • 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 中的讨论

  • 相关阅读:
    【转】以太坊分片:Overview and Finality
    Raiden Network — Ethereum 区块链支付通道
    ERC 和 EIP 代表什么呢?
    【转】什么是加密经济学
    Ethereum Probabilistic Micropayments
    【转】以太坊钱包分析与介绍
    【转】用Python从零开始创建区块链
    【转】用 Go 构建一个区块链
    通用权限管理系统组件 (GPM
    通用权限管理系统组件 (GPM
  • 原文地址:https://www.cnblogs.com/wangsongbai/p/13444588.html
Copyright © 2011-2022 走看看