mysql如何修改时区
mysql 里CST时区的坑
一、 问题简述
mysql里CST时区是个非常坑的概念,因为在mysql里CST既表示中国也表示美国的时区。但是在JDK代码里,CST这个字符串被理解为CenTral Standard Time(USA)(GMT-6),这就造成坑的原因。
解决办法
mysql 的time_zone 配置不要用SYSTEM,因为用了就是跟随system_time_zone的值,而system_time_zone读取自数据库所在宿主机的操作系统,常常是CST的值。解决办法是将time_zone改成例如 +08:00 以免造成误会。
二、 查看时区、修改时区
-
查看时区
1.1、方法1show variables like '%time_zone%';
看time_zone就行了,SYSTEM表示其值跟随system_time_zone
而system_time_zone的CST值,是表示中国呢,还是美国呢,是不清楚的,你直接在执行 select now()
对比一下现在时间就知道了。
1.2、方法2
# 查出全局时区和会话时区
select @@GLOBAL.time_zone,@@SESSION.time_zone;
为什么mysql有system_time_zone和time_zone两个呢
system_time_zone就是mysql服务(即mysqld)启动的时候读取数据库所在宿主机的时区,system_time_zone固定下来后,即使服务器的时区发生改变也不会影响system_time_zone的值,除非重启mysqld服务;当system_time_zone的值为SYSTEM时,time_zone的值会跟随system_time_zone。
2、如何修改时区
2.1、修改会话级别,关闭会话就会失效,也仅仅影响当前会话窗口
set time_zone = '+08:00'
2.2、全局修改、重启mysql服务后丢失,对所有会话生效
set global time_zone = '+08:00'
2.3、永久修改,修改配置文件,重启mysql服务生效
#修改my.cnf文件,在[mysqld]节点增加default-time-zone=‘+08:00’
2.4、重启mysqld服务,并查看分区
systemctl restart mysqld;
show variables like '%time_zone%';
#可以看出配置文件修改的是time_zone的值
相关文章
- mysql 之general_log日志开启详解以及清空
- Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号
- mysql数据库中,如何对json数据类型的值进行修改?通过json_set函数对json字段值进行修改?
- mysql中,root用户密码被遗忘,该如何进行重置?
- web安全day49:SQL注入原理、危害、分类,动手写MYSQL最基本操作命令
- redis和mysql数据不一致问题如何解决?
- 如何在 MySQL 中存储 emoji ?
- [转]mysql中表设计如何更好的选择数据类型
- [转]mysql如何利用Navicat 导出和导入数据库
- Mysql中Truncate用法详解
- mysql数据库恢复
- 在数据库繁忙时如何快速有效的关闭MySQL服务
- 监控MySQL组复制
- 转 mysql 升级事宜
- 转 zabbix debug and zabbix使用percona插件监控mysql
- Centos7.3离线(tar方式)安装mysql服务
- 【MySQL】20-MySQL如何创建和管理表超详细汇总
- 【MySQL】MySQL中如何实现分页操作
- 初学mysql 如何删除数据库 如何安装mysql
- Ubuntu 下 JDK+Tomcat+MySql 环境的搭建
- 3分钟如何向MySQL数据库中插入100万条数据
- 如何将数据库从MySQL移植MemSQL
- MySQL隔离级别实验
- MySQL · myrocks · myrocks写入分析
- MySQL如何对主从数据不一致的情况进行校验并继续同步
- mysql 权重
- 设置如何远程连接mysql数据库
- mysql测试spring事务是否生效
- linux系统下mysql跳过密码验证登录和创建新用户
- MySQL服务器安装完之后如何调节性能
- mysql如何给汉字按照首字母顺序排序
- MySQL 函数 && 单行函数