技术标签: mysql 8 Linux 时区 # Docker # MySQL docker
【注】MySQL 5.7
也类似,只是配置文件有所改变,在文章中会详细说明。
虽然在正式环境中不推荐使用 MySQL 容器
来存储数据,但是在内网的开发环境中还是可以使用的,但是 MySQL 容器
默认的不是中国时区
,而是世界标准时间(UTC
),所以在国内使用的话需要配置一下,否则会早8个小时,可以通过下面方法检查一下:
查看数据库当前时间:
SELECT NOW()
NOW |
---|
2020-12-08 06:27:46 |
查看数据库当前时区:
SHOW VARIABLES LIKE '%time_zone%';
Variable_name | Value |
---|---|
system_time_zone | UTC |
time_zone | SYSTEM |
说明:
system_time_zone UTC
: 当前系统时区time_zone:SYSTEM
: MySQL 采取的时区,默认为 SYSTEM,跟随系统。通过SQL
语句设置。
# 仅修改当前会话的时区,停止会话失效(看具体场景使用)
set time_zone = '+8:00';
# 修改全局的时区配置,但是重启后会失效
SET GLOBAL time_zone = 'Asia/Shanghai'
# 或
SET GLOBAL time_zone = '+8:00'
# 强制刷新
flush privileges
如果原有容器可是删除的话,可以直接创建一个新的容器,并指定时区参数,这样容器的 Linux
环境就成为中国标准时间(CST)
,时区的标准比较复杂,这里不做太多探讨。
docker run -d -p 3306:3306 --name mysql-test -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=123456 mysql
参数说明:
-e TZ=Asia/Shanghai
:表示时区为中国(上海)。
【注】更多参数请访问:
【注】这样修改后,容器所在的 Linux 系统环境仍然使用的是 UTC 时间,而 MySQL 使用的是我们设置的时间。
【注】 容器内部默认使用的是最小化的 debian 发行版,默认没有文本编辑器,需要自行安装。如果不想安装环境,直接异步:高级篇:通过 docker cp 操作配置文件
# 更新源(速度会比较慢)建议使用阿里镜像
apt-get update
# 安装 vim
apt install vim
# 查看正在运行的容器
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
946175835a9f mysql "docker-entrypoint.s…" 29 seconds ago Up 28 seconds 33060/tcp, 0.0.0.0:4000->3306/tcp mysql-test
# 进入容器内部
docker exec -it mysql-test bash
# 或
docker exec -it 946175835a9f bash
配置文件放在 /etc/mysql
目录下。
# MySQL 8 默认只有 my.cnf 和 conf.d 等文件
# 修改的时候只修改 my.cnf 文件即可
cd /etc/mysql
vim my.cnf
# MySQL 5.7 默认有 my.cnf、conf.d、mysql.cnf、mysql.conf.d 等文件
# 修改的时候需修改 mysql.conf.d/mysqld.cnf 文件即可
cd /etc/mysql/mysql.conf.d
vim mysqld.cnf
找到 [mysqld]
,并在 datadir
下面另加一行 default-time-zone = '+8:00'
即可,然后保存并退出。
【注】default-time-zone = '+8:00'
比较简单,如果想更容易理解的话也可以:default-time-zone = 'Asia/Shanghai'
,都是一样的效果。图片中应为 default-time-zone
。
docker restart mysql-test
【注】进入 docker
容器内部更多信息请移步:Docker 进入容器,并在容器内执行命令
通过第三种方式需要安装额外的文本编辑器才能对配置文件就行编辑与保存,比较麻烦。一般来说宿主机器都会配置好相关的软件,通过使用 docker cp
命令可以把 MySQL
的配置文件
复制到宿主机器上,在宿主机器上编辑完成后,在复制到容器内部替换掉原有的配置文件,在此操作之前,我们最好是先在容器内,将配置文件备份一下(这里以 MySQL 8 为例,MySQL 5.7 类似)。
# 进入容器内部
docker exec -it mysql-test bash
# 或
docker exec -it 946175835a9f bash
# 备份文件目录
cd /etc/mysql
cp my.cnf my.cnf.bak
通过 docker cp
复制容器中的配置文件至宿主主机
# 进入当前用户主目录
cd ~
# 把容器中配置文件复制到当前目录
docker cp mysql-test:/etc/mysql/my.cnf ./
# 修改配置文件(宿主机器)
vim my.cnf
找到 [mysqld]
,并在 datadir
下面另加一行 default-time_zone = '+8:00'
即可,然后保存并退出。
【注】default-time_zone = '+8:00'
比较简单,如果想更容易理解的话也可以:default-time_zone = 'Asia/Shanghai'
,都是一样的效果。
docker cp my.cnf mysql-test:/etc/mysql/my.cnf
docker restart mysql-test
进入 docker
容器内部更多信息请移步:Docker 进入容器,并在容器内执行命令
【注】最佳实践
个人博客:Roc’s Blog
文章浏览阅读3.3k次,点赞4次,收藏9次。首先,我们先来看一下效果_scratch母亲节作品
文章浏览阅读686次。package mainimport ( "awesomeProject1/src/github.com/hyperledger/fabric/core/chaincode/shim" "awesomeProject1/src/github.com/hyperledger/fabric/protos/peer" "bytes" "encoding/json" "..._开源投票系统 github
文章浏览阅读3.9k次。需要再Terminal里面输入tensorboard --logdir logs才能打开Tensorboard# tensorboard --logdir=logs --port=6007 是将端口号改为了6007#一般用到一下几个指令:# 一、打开图片显示图片# writer.add_images("input",imgs,step) 第一个是标签,第二个是图像,注意图像必须是numpy或者tentor类型的,而且必须是通道数在前面,比如RGB三通道的就要是3*w*h#如果通道数在后面,则._tensorboard代码
文章浏览阅读1.2k次。reverse的音标英 [rɪˈvɜːs]美 [rɪˈvɜːrs]reverse的用法v. 颠倒;彻底转变;使完全相反;撤销,废除(决定、法律等);使反转;使次序颠倒n. 相反的情况(或事物);后面;背面;反面;倒挡adj. 相反的;反面的;反向的;背面的;后面的第三人称单数: reverses 复数: reverses 现在分词: reversing 过去式: reversed 过去分词: re..._reverseorder
文章浏览阅读1w次。import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Demo {public static void main(String[] args) throws ParseException {//获..._创建一个指定时间用什么语句
文章浏览阅读1.6k次。Sublime Text 2和3的对比相比于2,Sublime Text 3就秒启动一项,就压倒性地胜利了。因此在之后的叙述中都以Sublime Text 3为主角。并且3一直在不断的完善更新,具体的差异可参看Sublime Blog.简单的说:ST3支持在项目目录里面寻找变量 提供了对标签页更好地支持(更多的命令和快捷键) 加快了程序运行的速度 更新了API,使用Pytho..._folder_exclude_patterns
文章浏览阅读60次。go-mysqlA pure go library to handle MySQL network protocol and replication.ReplicationReplication package handles MySQL replication protocol like python-mysql-replication.You can use it as a MySQL sla..._replication.newbinlogsyncer
文章浏览阅读236次。C/C++头文件一览 C、传统 C++#include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include //参数化输入/输出#include
文章浏览阅读307次。在PHP中读取二进制文件2012-10-30[1715]technologyphp次阅读很多时候,数据并不是用文本的方式保存的,这就需要将二进制数据读取出来,还原成我们需要的格式。PHP在二进制处理方面也提供了强大的支持。任务下面以读取并分析一个PNG图像的文件头为例,讲解如何使用PHP读取和分析二进制文件。涉及函数PNG格式简介为了完成任务,下面简单介绍一下PNG文件格式。PNG是一种无损压缩的..._php 查找字符串中的二进制
文章浏览阅读1.4w次。kettle报错couldn't convert string [1970-01-01 00:00:00] to a date using format [yyyy/MM/dd HH:mm:ss.SSS]1.报错如下2019/01/08 12:04:18 - 替换NULL值.0 - ERROR (version 8.1.0.0-365, build 8.1.0.0-365 from 2018-..._kettle导出date报错
文章浏览阅读922次。串口通信(Serial Communication),是指外设和计算机间通过数据信号线、地线等按位进行传输数据的一种通信方式,属于串行通信方式。串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。(1)接口标准串口通信的接口标准有很多,有 RS-232C、RS-232、RS-422A、RS-485 等。常用的就是 RS-232 和 RS-485。RS-232 其实是 R..._多串口电脑有什么用途
文章浏览阅读2.5w次,点赞7次,收藏18次。转载请注明出处:http://blog.csdn.net/forevercbb/article/details/51037833 由于Google不再支持Eclipse之后,转向Google的亲儿子——AndroidStudio是必然的,但是AndroidStudio的配置以及使用都比Eclipse复杂,不熟悉的情况下经常会遇到一些莫名其妙的问题,导致应用无法正常编译。代码出现的bug可以根据错_run configuration app is not supported in the current project. cannot obtain