Docker的MySQL容器時(shí)區(qū)問題修改
前言
阿航在開發(fā)Springboot項(xiàng)目時(shí), 前端告訴驗(yàn)證碼一直無(wú)效. 本地測(cè)試沒有問題, 一看遠(yuǎn)程服務(wù)器的數(shù)據(jù)庫(kù)時(shí)間, 哇塞–早了8小時(shí). 很明顯, 是MySQL的時(shí)區(qū)問題. 本篇文章就來(lái)記錄下如何修改Docker 的 MySQL 容器時(shí)區(qū).
解決方案
先來(lái)校驗(yàn)下數(shù)據(jù)庫(kù)是否真的時(shí)區(qū)不對(duì). 進(jìn)入MySQL數(shù)據(jù)庫(kù), 運(yùn)行語(yǔ)句:
SELECT NOW();
會(huì)返回類似這樣的數(shù)據(jù):
mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2020-07-04 15:46:46 | +---------------------+ 1 row in set (0.09 sec)
再來(lái)查詢下當(dāng)前時(shí)區(qū), 輸入以下命令:
SHOW VARIABLES LIKE '%time_zone%';
會(huì)返回類似這樣的數(shù)據(jù):
mysql> SHOW VARIABLES LIKE '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | UTC | | time_zone | +00:00 | +------------------+--------+ 2 rows in set (0.12 sec)
如果返回的時(shí)間和你的相差多個(gè)小時(shí), 并且時(shí)區(qū)不對(duì)(非+08:00)的話, 那么證明你需要向下看了.
方法一: 臨時(shí)修改
當(dāng)我們的需求非常急的時(shí)候, 我們可以做此臨時(shí)修改. 運(yùn)行命令:
SET GLOBAL time_zone = '+8:00';
再次運(yùn)行以下命令, 校驗(yàn)返回結(jié)果是否為當(dāng)前時(shí)間:
SELECT NOW();
返回當(dāng)前時(shí)間則證明修改成功.
之所以本方法稱為”臨時(shí)修改”, 是因?yàn)橹貑ySQL后該修改會(huì)失效.
方法二: 啟動(dòng)時(shí)加參數(shù)
此方法適用于條件允許我們重新創(chuàng)建一個(gè)MySQL容器,
創(chuàng)建容器時(shí), 我們需要加上指定時(shí)區(qū)的命令(東八區(qū)是上海, 你可以按需修改為自己的時(shí)區(qū)):
-e TZ=Asia/Shanghai
所以, 我們的docker完整運(yùn)行命令應(yīng)該為(僅供參考, 你的運(yùn)行命令可能略有差異):
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -e TZ=Asia/Shanghai -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
要查看各個(gè)參數(shù)的用途, 請(qǐng)查看我的這篇文章: 《Docker 安裝 MySQL》.
方法三: 修改容器內(nèi)配置
輸入以下命令進(jìn)入mysql容器:
docker exec -it 容器ID bash
修改MySQL配置文件(兩種情況):
vim /etc/mysql/mysql.conf.d
或者
vim /etc/mysql/my.cnf
如果以上命令返回bash: vim: command not found, 請(qǐng)先閱讀Docker容器沒有vim命令的解決方案
進(jìn)入配置文件后, 點(diǎn)擊i進(jìn)入編輯模式, 添加一行配置文件:
default-time-zone = '+08:00'
如圖:
添加配置文件
完成后, 點(diǎn)擊ESC, 輸入:wq進(jìn)行保存并退出.
再輸入exit退出docker容器.
接下來(lái)我們要重啟mysql容器, 輸入命令:
docker restart 容器ID
至此, 已經(jīng)成功修改了時(shí)區(qū)配置.
重啟后, 輸入以下命令驗(yàn)證是否成功:
SELECT NOW();
如果返回時(shí)間和當(dāng)前時(shí)間一致, 則證明修改成功.
結(jié)語(yǔ)
如果特別急, 推薦方法一. 不急則推薦方法二. 各位同學(xué)按需選擇使用.
到此這篇關(guān)于Docker的MySQL容器時(shí)區(qū)問題修改的文章就介紹到這了,更多相關(guān)Docker MySQL容器時(shí)區(qū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker鏡像的遷移與備份及Dockerflie 使用方法詳解
遷移和備份主要有三個(gè)操作命令將容器保存為鏡像、備份鏡像(將鏡像導(dǎo)出為一個(gè)文件)、鏡像的遷移與恢復(fù),這篇文章主要介紹了Docker鏡像的遷移與備份、Dockerflie 使用方法,需要的朋友可以參考下2022-07-07使用Docker Compose部快速署ELK(親測(cè)有效)
這篇文章主要介紹了Docker Compose部署ELK的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08在Docker中使用mongodb數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼
這篇文章主要介紹了在Docker中使用mongodb數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-10-10Docker部署springboot項(xiàng)目到騰訊云的實(shí)現(xiàn)步驟
本文主要介紹了Docker部署springboot項(xiàng)目到騰訊云的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04如何通過Dockerfile 創(chuàng)建 kali-novnc
這篇文章主要介紹了如何通過Dockerfile 創(chuàng)建 kali-novnc,在Dockerfile所在目錄運(yùn)行相關(guān)命令操作即可完成,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-04-04docker安裝Adminer并支持mysql和mongodb的詳細(xì)步驟
這篇文章主要介紹了docker安裝Adminer并支持mysql和mongodb,通過查找并拉取Adminer鏡像,啟動(dòng)docker,支持mysq,本文分步驟給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10使用Docker容器部署rocketmq單機(jī)的全過程
這篇文章主要介紹了使用Docker容器部署rocketmq單機(jī),詳細(xì)介紹了查詢鏡像拉取鏡像的命令,對(duì)Docker部署rocketmq相關(guān)知識(shí)感興趣的朋友一起看看吧2022-04-04