解决MySQL时间早8h问题

jasmine 于 2019-02-19 发布

时间说明

CST应该是指(China Shanghai Time,东八区时间) UTC应该是指(Coordinated Universal Time,标准时间)

问题原因

解决方案

1、系统时间问题

1)查看系统时间

date 或者 date -R

2)重新设置系统时间

2、docker时间问题

1)查看docker时间 docker exec [containerId] date

2)解决方法
方法一:共享主机的localtime

docker run –name -v /etc/localtime:/etc/localtime:ro

方法二:复制主机的localtime(解决问题)

docker cp /etc/localtime [containerId]:/etc/localtime

方法三:创建自定义的dockerfile

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo ‘Asia/Shanghai’ >/etc/timezone

3)重启MySQL后生效

3、MySQL时间问题

1)查看MySQL时间

select now();

2)临时解决方案

show variables like '%time_zone%';
set global time_zone = '+08:00'; // 修改mysql全局时区为北京时间,即我们所在的东8
set time_zone = '+08:00'; // 修改当前会话时区
flush privileges;

3)永久解决
修改MySQL在本机挂载的配置文件,在[mysqld]下加入

default-time-zone = ‘+08:00’

4)重启MySQL后生效