热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux修改时间对mysql的影响,Mysql时间和本机时间不一致Linux设置或修改时间与时区的正确方法...

工作过程遇到开发告诉我数据库时间和当前时间不一致,于是去查看,发现系统时间不是当前时间,于是查找资料整理如下,希望也可以帮到其它人。一、M

工作过程遇到开发告诉我数据库时间和当前时间不一致,于是去查看,发现系统时间不是当前时间,于是查找资料整理如下,希望也可以帮到其它人。

一、Mysql时间和本机时间不一致

通过mysql命令行模式下动态修改

1.查看mysql当前时间,当前时区

(root@localhost) [(none)]>select now();

+---------------------+

| now() |

+---------------------+

| 2018-12-07 02:30:06 |

+---------------------+

1 row in set (0.00 sec)

(root@localhost) [(none)]> show variables like "%time_zone%";

+------------------+--------+

| Variable_name | Value |

+------------------+--------+

| system_time_zone | EST |

| time_zone | SYSTEM |

+------------------+--------+

2 rows in set (0.00 sec)

(root@localhost) [(none)]>

time_zone说明mysql使用system的时区

system_time_zone说明system使用EST时区

2、修改时区

临时生效

set global time_zone = '+8:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区

set time_zone = '+8:00'; ##修改当前会话时区

flush privileges; #立即生效

永久生效

通过修改my.cnf配置文件来修改时区

vim /etc/my.cnf ##在[mysqld]区域中加上

default-time_zone = '+8:00'

/etc/init.d/mysqld restart ##重启mysql使新时区生效

二、Linux设置或修改时间与时区的正确方法

首先了解一下linux系统的时间

linux系统时间有两个,一个是硬件时间,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时间,是linux系统Kernel时间。当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作。有时我们会发现系统时钟和硬件时钟不一致,因此需要执行时间同步。

1)查看时间和设置时间以及系统时钟和硬件时钟同步

1、date 查看/设置系统时间

1、将日期设置为2018年10月6日

[root@linux ~]# date -s 10/06/18

2、将时间设置为11点12分13秒

[root@linux ~]# date -s 11:12:13

3、将时间设置为2018年10月6日11点12分13秒(MMDDhhmmYYYY.ss)

[root@linux ~]# date 1006111218.13

2、hwclock/clock 查看/设置硬件时间

1、查看系统硬件时钟(以下两个一样效果)

[root@linux ~]# hwclock --show

[root@linux ~]# clock --show

2、设置硬件时间(以下两个一样效果)

[root@linux ~]# hwclock --set --date="10/06/18 12:13" (月/日/年时:分:秒)

[root@linux ~]# clock --set --date="10/06/18 12:13" (月/日/年时:分:秒)

3、同步系统及硬件时钟

1、系统时间找硬件时间同步(以下两个一样效果)

[root@linux ~]# hwclock --hctosys

[root@linux ~]# clock --hctosys

备注:hc代表硬件时间,sys代表系统时间,以硬件时间为基准,系统时间找硬件时间同步

2、硬件时间找系统时间同步(以下两个一样效果)

[root@linux ~]# hwclock --systohc

[root@linux ~]# clock --systohc

备注:以系统时间为基准,硬件时间找系统时间同步

2)修改时区

首先了解时区

CentOS和Ubuntu的时区文件是/etc/localtime,但是在CentOS7以后localtime以及变成了一个链接文件

[root@centos7 ~]# ll /etc/localtime

lrwxrwxrwx 1 root root 33 Oct 15 2017 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai

如果采用直接cp的方法修改系统时区,那么就会把它所链接的文件修改掉,例如把美国的时区文件内容修改成了上海的时区内容,有可能会导致有些编程语言或程序在读取系统时区的时候发生错误

正确的修改时区方法

1、CentOS6、Ubuntu16

# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2、CentOS7、RHEL7等等

最好的方法是使用timedatectl命令

# timedatectl list-timezones |grep Shanghai #查找中国时区的完整名称

# timedatectl set-timezone Asia/Shanghai #其他时区以此类推

或者直接手动创建软链接

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3、修改配置文件来修改时区

[root@linux ~]# echo "ZONE=Asia/Shanghai" >> /etc/sysconfig/clock

[root@linux ~]# rm -f /etc/localtime

#链接到上海时区文件

[root@linux ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

总结:

我的场景是mysql数据库时间和当前时间不一致,是系统时区问题。后来发现这个系统时区是EST美国时区,是客户提供的系统,部署系统时没有选对时区。现在数据库又不能停止,因此按照上面,这数据库全局设置set global time_zone = '+8:00';然后数据库时间是正常的了(说明: system_time_zone 这个值是数据库启动从系统读取产生的只读变量,不可修改)。然后就是我的系统是centos7.4,因此使用timedatectl 命令修改系统时区是最方便的,这样即使数据库重启或系统重启,都是正确的时区。

[root@linux ~]# timedatectl set-timezone Asia/Shanghai

[root@linux ~]# timedatectl status

Local time: Fri 2018-12-07 11:11:39 CST

Universal time: Fri 2018-12-07 03:11:39 UTC

RTC time: Fri 2018-12-07 11:11:37

Time zone: Asia/Shanghai (CST, +0800)

NTP enabled: yes

NTP synchronized: yes

RTC in local TZ: yes

DST active: n/a

[root@linux ~]#



推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
author-avatar
笨笨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有