Docker 技術(shù)系列之安裝多版本Mysql5.6和Mysql5.7

image

大家好昵仅,后面的就不是關(guān)于MAC專有的內(nèi)容,基本是跟Java環(huán)境梢卸,基礎(chǔ)技術(shù)方面有關(guān)走诞。所以這個(gè)教程對于在linux系統(tǒng)還是macOS都是通用的副女,不用擔(dān)心蛤高。

上一篇,我們安裝好對應(yīng)的Docker之后碑幅,感受到了它的便利戴陡。接下來我們來安裝Mysql吧,它在開發(fā)中經(jīng)常需要用到沟涨。

MySQL 是世界上最受歡迎的開源數(shù)據(jù)庫恤批。憑借其可靠性、易用性和性能裹赴,MySQL 已成為 Web 應(yīng)用程序的數(shù)據(jù)庫優(yōu)先選擇喜庞。

說個(gè)痛點(diǎn),如果是在windows棋返,不可想像延都,你要安裝不同版本的mysql進(jìn)行測試,而且不想讓他們版本之間有什么交集睛竣。比如說晰房,公司用著穩(wěn)定版本的5.6,但是目前市面上比較新的課程都采用mysql5.7 進(jìn)行教學(xué)射沟,想嘗嘗鮮殊者。這安裝簡直是一個(gè)噩夢,有了docker验夯,輕松就能解決這個(gè)問題猖吴,端口和配置也不會沖突。

image

如果是centos安裝還好點(diǎn)挥转,如果是通過源碼編譯安裝還是得折騰一會的距误。所以接下來簸搞,我們一起通過docker來安裝mysql。

一准潭、查看可用的 MySQL 版本

方式一:網(wǎng)頁端訪問 MySQL 鏡像庫地址:

https://hub.docker.com/_/mysql

方式二:我們還可以用命令來查看可用版本趁俊。

 docker search mysql

看看效果圖:

image

二、官網(wǎng)獲取 MySQL 鏡像

以下版本供您選擇

# 拉取 mysql 5.7docker pull mysql:5.7# 拉取最新版mysql鏡像,如果不寫后面的版本號則會自動拉取最新版docker pull mysql

這里以5.7版本為例刑然。

docker pull mysql:5.7

第一次拉去,會比較久一點(diǎn),需要去下載對應(yīng)的鏡像寺擂。

三、查看本地鏡像

使用以下命令來查看是否已安裝了 mysql

docker images

四泼掠、運(yùn)行Mysql容器

安裝完成后怔软,我們可以使用以下命令來運(yùn)行 mysql 容器:

  • 1、創(chuàng)建掛載目錄

創(chuàng)建掛載目錄择镇,主要是方便修改配置文件達(dá)到方便控制的目的挡逼。

mkdir -p $HOME/docker/mysql57

是為了方便管理建的目錄,主要是表示docker項(xiàng)目下放置的一些配置文件腻豌。mysql57表示應(yīng)用名字

cd $HOME/docker/mysql57
  • 2家坎、運(yùn)行Mysql容器

方式一:不需要掛載目錄(不推薦)

docker run -p 3306:3306 --name mysql57 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

方式二:需要掛載目錄(推薦)

docker run -p 3306:3306 --name mysql57 \ 
-v $PWD/conf:/etc/mysql \
-v $PWD/logs:/var/log/mysql \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

參數(shù)說明

  • –name:容器名,此處命名為mysql57
  • -v :掛載目錄
  • -e:配置信息吝梅,此處配置mysql的root用戶的登陸密碼
  • -p:端口映射虱疏,此處映射 主機(jī)3306端口 到 容器的3306端口
  • -d:源鏡像名,此處為 mysql:5.7并后臺運(yùn)行 后面為設(shè)置mysql的默認(rèn)編碼

3苏携、選項(xiàng)執(zhí)行做瞪,如果不需要mysql56,可以不需要執(zhí)行右冻。

image

創(chuàng)建目錄

mkdir -p $HOME/docker/mysql56

進(jìn)去該目錄

cd $HOME/docker/mysql56

拉取鏡像

docker pull mysql:5.6

mysql5.6 安裝

docker run -p 3307:3306 --name mysql56 \
-v $PWD/conf:/etc/mysql \
-v $PWD/logs:/var/log/mysql \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.6 \--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci

可能會遇到的問題装蓬,如果一開始沒有執(zhí)行拉取鏡像的命令,會自動拉取鏡像纱扭,然后默認(rèn)已經(jīng)創(chuàng)建了一個(gè)鏡像mysql56牍帚,我們通過命令查找回來,然后啟動即可跪但。

查看所有容器

docker ps -a

刪除容器

docker rm 容器id

啟動容器

docker start 容器id

額外提供倆個(gè)快速命令

# 停止所有容器docker stop $(docker ps -a -q)# remove刪除所有容器$ docker rm $(docker ps -a -q)

五履羞、安裝成功

通過 docker ps 命令查看是否安裝成功。

docker ps -a

容器狀態(tài)的Up狀態(tài)屡久,表示容器正在運(yùn)行忆首,并且可以看到主機(jī)和容器的端口映射關(guān)系。

重啟mysql容器

docker restart mysql57

查看mysql日志

docker logs -f mysql57

六被环、Mysql 測試

進(jìn)入到mysql容器

docker exec -ti mysql57 /bin/bash

參數(shù)說明

  • -t 在容器里生產(chǎn)一個(gè)偽終端
  • -i 對容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互

登陸到mysql服務(wù)器

方式一

mysql -h 127.0.0.1 -u root -p

方式二

mysql -u root -p123456

查詢測試語句

use mysql;SELECT VERSION(), CURRENT_DATE;

如果需要遠(yuǎn)程登錄的糙及,需要執(zhí)行授權(quán)命令 1、直接讓root也可以遠(yuǎn)程登陸(不建議)

GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY '123456' WITH GRANT OPTION;

2筛欢、創(chuàng)建一個(gè)用戶admin遠(yuǎn)程登陸(建議)

GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY '123456' WITH GRANT OPTION;

3浸锨、刷新權(quán)限

FLUSH PRIVILEGES;

4唇聘、查看用戶

select host,user from user;

5、備份數(shù)據(jù)

$ docker exec mysql57 sh -c 'exec mysqldump --all-databases -uroot -p"123456"' > /some/path/on/your/host/all-databases.sql

6柱搜、恢復(fù)數(shù)據(jù)

$ docker exec -i mysql57 sh -c 'exec mysql -uroot -p"123456"' < /some/path/on/your/host/all-databases.sql

七迟郎、其他配置

  • 1、only_full_group_by 問題

如果安裝的版本是 5.7版本, 查詢數(shù)據(jù)時(shí)出現(xiàn)如下錯(cuò)誤

this is incompatible with sql_mode=only_full_group_by

可以使用使用下列方式解決

  • 2聪蘸、查詢 sql_mode
select @@sql_mode

結(jié)果如下

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  • 3宪肖、重置

刪除其中的 ONLY_FULL_GROUP_BY配置,重新設(shè)置到 config-file.cnf中

[mysqld]# 表名不區(qū)分大小寫lower_case_table_names=1#server-id=1datadir=/var/lib/mysql#socket=/var/lib/mysql/mysqlx.sock#symbolic-links=0sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

涉及比較深的部分健爬,如果有機(jī)會更新mysql方面的教程控乾,再講講。

總結(jié)

1娜遵、一句命令即可完成mysql的安裝蜕衡,方便快捷。

2设拟、多實(shí)例慨仿,不同端口相互之間不影響。

推薦閱讀

Docker 技術(shù)系列之安裝Docker Desktop for Mac

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒜绽,一起剝皮案震驚了整個(gè)濱河市镶骗,隨后出現(xiàn)的幾起案子桶现,更是在濱河造成了極大的恐慌躲雅,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骡和,死亡現(xiàn)場離奇詭異相赁,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)慰于,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門钮科,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人婆赠,你說我怎么就攤上這事绵脯。” “怎么了休里?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵蛆挫,是天一觀的道長。 經(jīng)常有香客問我妙黍,道長悴侵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任拭嫁,我火速辦了婚禮可免,結(jié)果婚禮上抓于,老公的妹妹穿的比我還像新娘。我一直安慰自己浇借,他們只是感情好捉撮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妇垢,像睡著了一般呕缭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上修己,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天恢总,我揣著相機(jī)與錄音,去河邊找鬼睬愤。 笑死片仿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尤辱。 我是一名探鬼主播砂豌,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼光督!你這毒婦竟也來了阳距?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤结借,失蹤者是張志新(化名)和其女友劉穎筐摘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體船老,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咖熟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柳畔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馍管。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖薪韩,靈堂內(nèi)的尸體忽然破棺而出确沸,到底是詐尸還是另有隱情,我是刑警寧澤俘陷,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布罗捎,位于F島的核電站,受9級特大地震影響岭洲,放射性物質(zhì)發(fā)生泄漏宛逗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一盾剩、第九天 我趴在偏房一處隱蔽的房頂上張望雷激。 院中可真熱鬧替蔬,春花似錦、人聲如沸屎暇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽根悼。三九已至凶异,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間挤巡,已是汗流浹背剩彬。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留矿卑,地道東北人喉恋。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像母廷,于是被迫代替她去往敵國和親轻黑。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Docker是一種容器技術(shù)琴昆,它的存在就是為了解決容器技術(shù)本身的復(fù)雜性氓鄙。Docker容器擁有很高的性能,同時(shí)同一臺宿...
    四條眉毛陸小雞閱讀 576評論 0 0
  • 0x01 核心概念 Docker鏡像類似于虛擬機(jī)鏡像业舍,可以理解為一個(gè)面向Docker引擎的只讀模板抖拦,包含了文件系統(tǒng)...
    閑云逸心閱讀 4,719評論 0 9
  • Docker 簡介 背景 開發(fā)和運(yùn)維之間因?yàn)榄h(huán)境不同而導(dǎo)致的矛盾 集群環(huán)境下每臺機(jī)器部署相同的應(yīng)用 DevOps(...
    段永平閱讀 613評論 0 0
  • Docker 學(xué)習(xí)目標(biāo): 掌握Docker基礎(chǔ)知識,能夠理解Docker鏡像與容器的概念 完成Docker安裝與啟...
    執(zhí)筆夢一場閱讀 3,225評論 2 10
  • 1.Docker簡介 1.1 什么是虛擬化 在計(jì)算機(jī)中勤讽,虛擬化(英語:Virtualization)是一種資源管理...
    EdwinGates閱讀 1,763評論 0 0