国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

寫最好的Docker安裝最新版MySQL8(mysql-8.0.31)教程(參考Docker Hub和MySQL官方文檔)

這篇具有很好參考價(jià)值的文章主要介紹了寫最好的Docker安裝最新版MySQL8(mysql-8.0.31)教程(參考Docker Hub和MySQL官方文檔)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、前言

??MySQL官方安裝包下載地址:
??https://dev.mysql.com/downloads/mysql/

?
??Docker Hub官方網(wǎng)址:
??https://hub.docker.com/

?
??如果需要了解Centos7下MySQL5.7最新版的安裝部署,可參考教程【最新MySQL-5.7.40在云服務(wù)器Centos7.9安裝部署)】。
?
??本教程是筆者參考Docker Hub和MySQL官方文檔,經(jīng)過(guò)多次操作,踩坑無(wú)數(shù)才撰寫出來(lái)的,內(nèi)容不能說(shuō)是全網(wǎng)最好,但絕對(duì)不會(huì)很差,起碼比網(wǎng)上很多博文要詳細(xì)得多。例如配置編碼集參數(shù)解決中文亂碼問(wèn)題,本教程中有多種方法處理,其它博文可能就只寫一種。Docker中安裝MySQL8容器,要注意的細(xì)節(jié)很多,比安裝MySQL5.7要麻煩得多!
?
??筆者畢竟專業(yè)技能有限,文中的某些描述或者操作如果有錯(cuò)誤,可以評(píng)論指出或加關(guān)注 @大白有點(diǎn)菜 討論,大家互相學(xué)習(xí)進(jìn)步。
?
??本文由 @大白有點(diǎn)菜 原創(chuàng),請(qǐng)勿盜用,轉(zhuǎn)載請(qǐng)說(shuō)明出處!如果覺(jué)得文章還不錯(cuò),請(qǐng)點(diǎn)點(diǎn)贊,加關(guān)注,謝謝!
?

二、安裝部署

?

1、在Docker Hub中搜索關(guān)鍵字“mysql”,查看MySQL的最新穩(wěn)定版,包含MySQL8和MySQL5.7系列。對(duì)應(yīng)的MySQL頁(yè)面有教程,讀者也可自行去看,但是不是很完整,筆者的教程參考官網(wǎng)且有改動(dòng)。

(1)Docker Hub中搜索“mysql”。
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
(2)選擇官方的“mysql”。頁(yè)面是MySQL在Docker中的版本的相關(guān)介紹,這里有這么一個(gè)規(guī)律:8.0.31, 8.0, 8, latest, 8.0.31-oracle, 8.0-oracle, 8-oracle, oracle 其實(shí)都是同一個(gè)版本,它們的鏡像ID都是相同,在頁(yè)面中放在同一行展示的,都是同一個(gè)版本,筆者驗(yàn)證過(guò)。頁(yè)面同時(shí)也有操作教程,并不是很全,只給出核心操作步驟。
?
??Docker Hub中MySQL介紹:https://hub.docker.com/_/mysql
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?

2、切換到“Tags”頁(yè)面,官方列出了最新的版本和對(duì)應(yīng)的命令,例如 docker pull mysql:latest ,拉取MySQL最新的版本。其實(shí)簡(jiǎn)寫 docker pull mysql ,mysql后面不同帶版本號(hào),等同于latest版,后面教程會(huì)驗(yàn)證。

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?

3、回歸正題,先創(chuàng)建三個(gè)目錄,創(chuàng)建MySQL容器時(shí)會(huì)掛載為容器的卷(Volume),用于Docker和宿主機(jī)(Centos)之間共享文件,包括配置文件、數(shù)據(jù)文件和日志文件。

?
??什么是卷(Volume)?命令 docker -v 中的“-v”就是這個(gè)卷,“-v”只是“--volume”的簡(jiǎn)寫。
?
??Docker官方文檔解釋的含義:https://docs.docker.com/storage/volumes/
?
使用 -p 創(chuàng)建多級(jí)目錄,即 mydata 目錄下創(chuàng)建 mysql 目錄, mysql 目錄下又創(chuàng)建 log 、data 、conf 三個(gè)目錄:

mkdir -p /mydata/mysql/log
mkdir -p /mydata/mysql/data
mkdir -p /mydata/mysql/conf

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?

4、拉取MySQL鏡像,可以看到,拉取的tag就是“l(fā)atest”。
docker pull mysql

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?

5、創(chuàng)建容器前先了解一些前置知識(shí)點(diǎn),更好地理解操作過(guò)程的一些參數(shù)配置。

(1)Docker Hub官方教程文檔中提到兩種方式去運(yùn)行新容器:使用自定義的 .cnf 配置文件配置選項(xiàng)作為標(biāo)志傳遞給mysqld,不用寫xxx.cnf配置文件。
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
(2)【重要】了解必要的前置知識(shí)點(diǎn),因?yàn)楹竺娌襟E配置用到的一些參數(shù)就以此有關(guān):MySQL8.0容器中,Server 和 Client 都有默認(rèn)的字符集。Client相關(guān)的字符集如果不為 utf8mb4 的話,連接Server查看表中數(shù)據(jù),中文就顯示為亂碼。
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
??1)與 Client 相關(guān)的配置:character_set_client、character_set_connection、character_set_results 、collation_connection。可以看到,前三個(gè)默認(rèn)字符集(character)的值為 latin1,最后一個(gè)排序規(guī)則(collation)的值默認(rèn)為 latin1_swedish_ci 。連接 Server 時(shí)查看表數(shù)據(jù),中文當(dāng)然會(huì)顯示亂碼了。

show variables like 'char%';
show variables like 'collation%';

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?
??2)與 Server 相關(guān)的配置:character_set_database、character_set_server、collation_database 、collation_server??梢钥吹?,前兩個(gè)默認(rèn)字符集(character)的值為 utf8mb4,最后兩個(gè)排序規(guī)則(collation)的值默認(rèn)為 utf8mb4_0900_ai_ci ,就是說(shuō)MySQL8中 Server 配置默認(rèn)的字符集就是 utf8mb4 。

show variables like 'char%';
show variables like 'collation%';

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
??3)“utf8_unicode_ci” 和“utf8mb4_general_ci”接觸得比較多,但“utf8mb4_0900_ai_ci”又是什么?
?
??三者都是MySQL的utf8編碼默認(rèn)的排序規(guī)則,MySQL官網(wǎng)文檔中介紹到:MySQL 5.7 和 8.0 之間的默認(rèn)排序規(guī)則utf8mb4不同5.7版是 utf8mb4_general_ci, 8.0版是 utf8mb4_0900_ai_ci )。

  • utf8編碼:MySQL5.7默認(rèn)排序規(guī)則為 utf8_unicode_ci
  • utf8mb4編碼:MySQL5.7默認(rèn)排序規(guī)則為 utf8mb4_general_ci ,MySQL8.0默認(rèn)排序規(guī)則為 utf8mb4_0900_ai_ci

?
??【MySQL 5.7 和 8.0 之間的默認(rèn)排序規(guī)則utf8mb4不同,附谷歌翻譯截圖】:
??https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html#charset-connection-system-variables

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
?
??【MySQL8.0服務(wù)器字符集和排序規(guī)則,附谷歌翻譯截圖】:
??https://dev.mysql.com/doc/refman/8.0/en/charset-server.html

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
??【MySQL5.7服務(wù)器字符集和排序規(guī)則,附谷歌翻譯截圖】:
??https://dev.mysql.com/doc/refman/5.7/en/charset-server.html

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
??【MySQL8.0支持的字符集和默認(rèn)排序規(guī)則,移除了 utf8,新增了 utf8mb3,保留 utf8mb4 ,附谷歌翻譯截圖】:
??https://dev.mysql.com/doc/refman/8.0/en/charset-charsets.html

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
??【MySQL5.7支持的字符集和默認(rèn)排序規(guī)則,有 utf8 和 utf8mb4 ,附谷歌翻譯截圖】:
??https://dev.mysql.com/doc/refman/5.7/en/charset-charsets.html

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?

6、方法一創(chuàng)建容器:將配置選項(xiàng)作為標(biāo)志傳遞給mysqld,不用寫xxx.cnf配置文件。

?
執(zhí)行以下命令,創(chuàng)建一個(gè) mysql 容器并指定目錄掛載為容器的卷,設(shè)置客戶端字符集:

docker run --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql --init-connect="SET collation_connection=utf8mb4_0900_ai_ci" --init-connect="SET NAMES utf8mb4" --skip-character-set-client-handshake

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
以上命令的參數(shù)又是什么意思呢?使用 docker run --help 查看各參數(shù)的含義:

docker run --help

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?

  • --name
    ? ?容器名稱。

  • -v
    ? ?參數(shù) -v 是 --volume list 的簡(jiǎn)寫,將指定的文件夾掛載為容器的卷(Volume),用來(lái)共享文件(日志文件、配置文件、數(shù)據(jù)文件)。

  • /mydata/mysql/log
    ? ?日志目錄。

  • /mydata/mysql/data
    ? ?數(shù)據(jù)目錄。

  • /mydata/mysql/conf
    ? ?配置文件目錄。

  • -p 3306:3306
    ? ?參數(shù) -p 是 --publish list 的簡(jiǎn)寫,將3306端口映射到容器的3306端口,對(duì)外提供端口。如果同時(shí)啟動(dòng)多個(gè)mysql容器,對(duì)外端口號(hào)可以不同,服務(wù)之間不會(huì)沖突。

  • -e MYSQL_ROOT_PASSWORD=123456
    ? ?參數(shù) -e 是 --env list 的簡(jiǎn)寫,設(shè)置環(huán)境變量,將 root 用戶的密碼變量(MYSQL_ROOT_PASSWORD)設(shè)置為 123456。

  • -d mysql
    ? ?參數(shù) -d 是 --detach 的簡(jiǎn)寫,指的是容器運(yùn)行在后臺(tái)并打印容器ID。后面的mysql可以加版本號(hào),例如mysql:latest、mysql:8.0.31 等等。

  • --init-connect="SET collation_connection=utf8mb4_0900_ai_ci"
    ? ?Client初始化連接Server時(shí),將 collation_connection 排序規(guī)則的值設(shè)置為 utf8mb4_0900_ai_ci 并作為標(biāo)志傳遞給 mysqld 。相當(dāng)于my.cnf配置文件下,[mysqld]位置下添加 init-connect=“SET collation_connection=utf8mb4_0900_ai_ci” 參數(shù)。

  • --init-connect="SET NAMES utf8mb4"
    ? ?Client初始化連接Server時(shí),設(shè)置系統(tǒng)變量 NAMES 的值為 utf8mb4 并作為標(biāo)志傳遞給 mysqld 。在MySQL官方文檔介紹中,設(shè)置 NAMES 的字符集,就是給三個(gè)會(huì)話系統(tǒng)變量 character_set_client、character_set_connection、character_set_results 設(shè)置一樣的字符集。相當(dāng)于my.cnf配置文件下,[mysqld]位置下添加 init-connect=“SET NAMES utf8mb4” 參數(shù)。

  • --skip-character-set-client-handshake
    ? ?相當(dāng)于my.cnf配置文件下,【mysqld】位置下添加 skip-character-set-client-handshake 參數(shù)。–character-set-client-handshake 的一個(gè)開(kāi)關(guān),用來(lái)忽略客戶端信息并使用默認(rèn)服務(wù)器字符。官方文檔中描述到,在MySQL 4.0版中,服務(wù)器和客戶端都有一個(gè)“全局”字符集,服務(wù)器管理員決定使用哪個(gè)字符。但MySQL4.1之后,客戶端連接服務(wù)器時(shí),是有 handshake(握手)的【官方文檔地址:連接字符集和排序規(guī)則】。
    ? ?MySQL4.1之后版本,當(dāng)客戶端連接時(shí),它想發(fā)送指定的字符集給服務(wù)端來(lái)設(shè)置 character_set_client、character_set_connection、character_set_results 這三個(gè)系統(tǒng)變量,當(dāng) mysqld 以 –character-set-server=utf8 這種配置啟動(dòng)時(shí),是無(wú)法控制客戶端字符集設(shè)置的,但MySQL4.0是可以這么做的,為了保留MySQL4.0這種行為,–character-set-client-handshake 開(kāi)關(guān)就誕生了。

?
??【設(shè)置 NAMES 的字符集,附谷歌翻譯截圖】:
??https://dev.mysql.com/doc/refman/8.0/en/set-names.html

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
??【“–skip-character-set-client-handshake”官方文檔介紹,附谷歌翻譯截圖】:
??https://dev.mysql.com/doc/refman/8.0/en/faqs-cjk.html
??https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_character-set-client-handshake

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?

7、方法二創(chuàng)建容器:使用自定義的 custom.cnf 配置文件。

?
(1)在 /mydata/mysql/conf/ 目錄下創(chuàng)建自定義的 custom.cnf 配置文件。文件名隨意,文件格式必須為 .cnf 。

vim /mydata/mysql/conf/custom.cnf

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?
??MySQL默認(rèn)配置文件 /etc/my.cnf 末尾中有這么一行:!includedir /etc/mysql/conf.d/ ,意思是,在 /etc/mysql/conf.d/ 目錄下新建自定義的配置文件 custom.cnf也會(huì)被讀取到,而且還是優(yōu)先讀取的(Docker Hub中的MySQL教程文檔有說(shuō)到)。
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?
(2)添加容器運(yùn)行的配置參數(shù)。

[mysqld]
init-connect="SET collation_connection=utf8mb4_0900_ai_ci"
init_connect="SET NAMES utf8mb4"
skip-character-set-client-handshake

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?
(3)創(chuàng)建容器并運(yùn)行。一些參數(shù)在【方法一創(chuàng)建容器】里面有說(shuō)明,這里不再細(xì)說(shuō)。

docker run --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?

8、禁用 root 賬戶被外部工具連接。

?
??進(jìn)入到容器里,連接mysql,刪除mysql數(shù)據(jù)庫(kù)user表中 user=“root”,host="%"的那條記錄。因?yàn)檫@條數(shù)據(jù)會(huì)允許 root 賬戶被允許外部工具(如Navicat或SQLyog)連接,實(shí)際上,應(yīng)該禁止這么做,正確做法是只允許 root 賬戶本地連接。如果想 root 賬戶繼續(xù)被外部工具連接,那就把root密碼設(shè)置得更復(fù)雜,過(guò)于簡(jiǎn)單不安全!
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
切換到 mysql 數(shù)據(jù)庫(kù):

use mysql;

刪除mysql數(shù)據(jù)庫(kù)user表中 user=“root”,host="%"的那條記錄:

delete user from mysql.user where user='root' and host='%';

刷新權(quán)限:

flush privileges;

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?

9、創(chuàng)建新賬戶供外部工具連接??蓞⒖嘉恼隆救绾蝺?yōu)雅地創(chuàng)建MySQL賬戶供外部工具連接】。

(1)使用 CREATE 創(chuàng)建賬戶,例如對(duì)應(yīng)mysql.user表中,字段user為 zyt ,字段host為 % ,賬號(hào)密碼為 dbydc&666 ,“%”代表任何主機(jī)。使用 GRANT 授予賬戶特定權(quán)限。
?
??1)創(chuàng)建用戶和密碼

CREATE USER 'zyt'@'%' IDENTIFIED BY 'dbydc&666';

create user 'zyt'@'%' identified by 'dbydc&666';

??2)授予賬戶特定權(quán)限。ALL 和 ALL PRIVILEGES 是一樣的,可簡(jiǎn)寫為 ALL 。

GRANT ALL ON *.* TO 'zyt'@'%' WITH GRANT OPTION;

grant all on *.* to 'zyt'@'%' with grant option;

?
(2)刷新賬號(hào)權(quán)限。

FLUSH PRIVILEGES;

flush privileges;

?
(3)使用Navicat工具測(cè)試連接,賬戶“zyt”是正常連接的。
?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)

?

10、設(shè)置容器自啟動(dòng)。
docker update --restart=always mysql

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?

11、容器的啟動(dòng)、停止、刪除、重新啟動(dòng)、查看運(yùn)行狀態(tài)。

(1)啟動(dòng)容器

docker start mysql

docker start 容器ID

(2)停止容器

docker stop mysql

docker stop 容器ID

(3)刪除容器

docker rm mysql

docker rm 容器ID

(4)重新啟動(dòng)容器

docker restart mysql

docker restart 容器ID

(5)查看容器運(yùn)行狀態(tài)
?
查看所有容器的運(yùn)行狀態(tài),包括運(yùn)行的和停止的

docker ps -a

查看所有運(yùn)行中的容器的狀態(tài),不包括停止的

docker ps

?

12、創(chuàng)建數(shù)據(jù)庫(kù)并驗(yàn)證功能。

(1)創(chuàng)建 dbydc 數(shù)據(jù)庫(kù),數(shù)據(jù)表為 tb_account 和 tb_user。

-- MySQL dump 10.13  Distrib 8.0.31, for Linux (x86_64)
--
-- Host: localhost    Database: dbydc
-- ------------------------------------------------------
-- Server version	8.0.31

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `dbydc`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `dbydc` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;

USE `dbydc`;

--
-- Table structure for table `tb_account`
--

DROP TABLE IF EXISTS `tb_account`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `tb_account` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '賬戶名稱',
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '密碼',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tb_account`
--

LOCK TABLES `tb_account` WRITE;
/*!40000 ALTER TABLE `tb_account` DISABLE KEYS */;
INSERT INTO `tb_account` VALUES (1,'zyt','123456'),(2,'君莫笑','654321');
/*!40000 ALTER TABLE `tb_account` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `tb_user`
--

DROP TABLE IF EXISTS `tb_user`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `tb_user` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '姓名',
  `age` int DEFAULT NULL COMMENT '年齡',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tb_user`
--

LOCK TABLES `tb_user` WRITE;
/*!40000 ALTER TABLE `tb_user` DISABLE KEYS */;
INSERT INTO `tb_user` VALUES (1,'大白有點(diǎn)菜',18),(2,'CSDN新人',20);
/*!40000 ALTER TABLE `tb_user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2022-11-18  4:02:16

?
(2)創(chuàng)建 dbydc2 數(shù)據(jù)庫(kù),數(shù)據(jù)表為 tb_user。

-- MySQL dump 10.13  Distrib 8.0.31, for Linux (x86_64)
--
-- Host: localhost    Database: dbydc2
-- ------------------------------------------------------
-- Server version	8.0.31

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Current Database: `dbydc2`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `dbydc2` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;

USE `dbydc2`;

--
-- Table structure for table `tb_user`
--

DROP TABLE IF EXISTS `tb_user`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `tb_user` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '姓名',
  `age` int DEFAULT NULL COMMENT '年齡',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `tb_user`
--

LOCK TABLES `tb_user` WRITE;
/*!40000 ALTER TABLE `tb_user` DISABLE KEYS */;
INSERT INTO `tb_user` VALUES (1,'大白有點(diǎn)菜666',20),(2,'CSDN新人666',22);
/*!40000 ALTER TABLE `tb_user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2022-11-19  2:33:53

?
(3)在不進(jìn)入容器的情況下查詢數(shù)據(jù)庫(kù)的表數(shù)據(jù)。
?
??通過(guò) shell 方式運(yùn)行mysql,-e 參數(shù)后面加上要執(zhí)行的指令,等同于mysql連接后輸入的指令一樣。此處先切換到 dbydc 數(shù)據(jù)庫(kù),再查詢 tb_account 和 tb_user 兩個(gè)數(shù)據(jù)表的所有數(shù)據(jù)。

docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "use dbydc;" -e "select * from tb_account;" -e "select * from tb_user;"'

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
??還有另外一種寫法,就是不用執(zhí)行 “use dbydc;”這條指令去切換數(shù)據(jù)庫(kù),直接在 “select * from tb_account;” 后面加 dbydc 數(shù)據(jù)庫(kù)即可。

docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "select * from tb_account;" dbydc -e "select * from tb_user;"'

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
??插入數(shù)據(jù)的語(yǔ)法是怎么寫的呢?SQL語(yǔ)句 insert into tb_user(name,age) values("西門吃雞", 36); 中有雙引號(hào),需要使用斜杠“\”來(lái)轉(zhuǎn)義。

docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "use dbydc;" -e "insert into tb_user(name,age) values(\"西門吃雞\", 36);" -e "select * from tb_user;"'

docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?

13、MySQL數(shù)據(jù)庫(kù)備份。

?
??MySQL官方文檔備份數(shù)據(jù)庫(kù):
??https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_databases

?
(1)創(chuàng)建數(shù)據(jù)備份目錄 db_backup

mkdir -p /mydata/db_backup

(2)備份所有數(shù)據(jù)庫(kù)。參數(shù) --all-databases 代表所有數(shù)據(jù)庫(kù)。備份sql文件名稱隨意,如 all-databases.sql 。

docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /mydata/db_backup/all-databases.sql

(3)同時(shí)備份多個(gè)指定的數(shù)據(jù)庫(kù)。參數(shù) --databases 后面可以指定數(shù)據(jù)庫(kù)名稱,支持1個(gè)或以上。備份sql文件名稱隨意,如 multi-databases.sql 。

docker exec mysql sh -c 'exec mysqldump --databases dbydc dbydc2 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /mydata/db_backup/multi-databases.sql

(4)備份一個(gè)數(shù)據(jù)庫(kù)。這里有兩種方式,但是,只有加了參數(shù) --databases 才能被正確地還原!
??1)有參數(shù) --databases ,可以被還原,最好使用這種方式。

docker exec mysql sh -c 'exec mysqldump --databases dbydc -uroot -p"$MYSQL_ROOT_PASSWORD"' > /mydata/db_backup/dbydc.sql

??2)無(wú)參數(shù) --databases ,不能被還原,不要使用這種方式。MySQL官網(wǎng)有寫到可以這么做,但是經(jīng)過(guò)筆者驗(yàn)證和查詢官網(wǎng)資料,這方式無(wú)法達(dá)到還原效果。筆者的專業(yè)技能有限,可能是支持還原的,但暫時(shí)寫不出來(lái)這樣的指令。

docker exec mysql sh -c 'exec mysqldump dbydc -uroot -p"$MYSQL_ROOT_PASSWORD"' > /mydata/db_backup/dbydc.sql

筆者試過(guò)以下的指令去還原數(shù)據(jù),但是發(fā)現(xiàn),根本行不通:

docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "use dbydc;"' < /mydata/db_backup/dbydc.sql

(5)備份指定的數(shù)據(jù)表。這種方式筆者驗(yàn)證過(guò),無(wú)法還原。

docker exec mysql sh -c 'exec mysqldump dbydc tb_user -uroot -p"$MYSQL_ROOT_PASSWORD"' > /mydata/db_backup/tb_user.sql

?

14、MySQL數(shù)據(jù)庫(kù)還原。

(1)還原所有數(shù)據(jù)庫(kù)。

docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /mydata/db_backup/all-databases.sql

(2)還原集合的數(shù)據(jù)庫(kù)。

docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /mydata/db_backup/multi-databases.sql

(3)還原一個(gè)數(shù)據(jù)庫(kù)。這里注意,必須是前面加了 --databases 參數(shù) mysqldump 出來(lái)的sql文件才會(huì)被正常還原!其實(shí)呢,使用 mysql 客戶端方式去還原sql文件,sql文件中必須要有 CREATE DATABASEUSE 這兩個(gè)語(yǔ)句,只有加了參數(shù) --all-databases--databases 的才會(huì)正常被加載。

docker exec -i mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /mydata/db_backup/dbydc.sql

?
??【加載備份的sql格式文件,附谷歌翻譯】:
??https://dev.mysql.com/doc/refman/8.0/en/reloading-sql-format-dumps.html

?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?
docker mysql8,MySQL從入門到放棄,Docker從入門到放棄,docker,mysql,數(shù)據(jù)庫(kù)?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-789594.html

到了這里,關(guān)于寫最好的Docker安裝最新版MySQL8(mysql-8.0.31)教程(參考Docker Hub和MySQL官方文檔)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 最新版Flink CDC MySQL同步MySQL(一)

    最新版Flink CDC MySQL同步MySQL(一)

    Flink CDC 是Apache Flink ?的一組源連接器,使用變更數(shù)據(jù)捕獲 (CDC) 從不同數(shù)據(jù)庫(kù)中獲取變更。Apache Flink 的 CDC Connectors集成 Debezium 作為捕獲數(shù)據(jù)更改的引擎。所以它可以充分發(fā)揮 Debezium 的能力。 連接器 數(shù)據(jù)庫(kù) 驅(qū)動(dòng) mongodb-cdc MongoDB: 3.6, 4.x, 5.0 MongoDB Driver: 4.3.4 mysql-cdc MySQL: 5.6, 5.

    2024年02月13日
    瀏覽(17)
  • 【2023最新版】DataGrip使用MySQL教程

    【2023最新版】DataGrip使用MySQL教程

    目錄 ?一、安裝MySQL 二、安裝DataGrip 三、DataGrip使用MySQL 1. 新建項(xiàng)目 2. DataGrip連接MySQL 下載驅(qū)動(dòng)文件 填寫root+密碼 測(cè)試 成功 3. DataGrip操作MySQL 四、MySQL常用命令 1. 登錄 2. 幫助 3. 查詢所有數(shù)據(jù)庫(kù) ????????MySQL是一種開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),它是最流行和廣泛

    2024年02月09日
    瀏覽(33)
  • 快速安裝最新版Docker

    快速安裝最新版Docker

    安裝docker 列出系統(tǒng)中以安裝的docker包: 卸載以安裝的docker包 如果系統(tǒng)中沒(méi)有docker,則直接進(jìn)行下一步 安裝docker所需依賴:? 添加docker的yum源: yum安裝docker: 驗(yàn)證docker版本以確認(rèn)安裝成功: 如圖所示,docker安裝成功 啟動(dòng)docker 執(zhí)行以下命令啟動(dòng)docker: 然后將docker設(shè)置為開(kāi)機(jī)

    2024年02月12日
    瀏覽(27)
  • 最新版Flink CDC MySQL同步MySQL(一)_flink 連接mysql(1)

    最新版Flink CDC MySQL同步MySQL(一)_flink 連接mysql(1)

    下載 連接器 SQL jar (或 自行構(gòu)建 )。 將下載的jar包放在FLINK_HOME/lib/. 重啟Flink集群。 注意 :目前2.4以上版本需要進(jìn)行自行編譯構(gòu)建。本文筆者自行進(jìn)行構(gòu)建上傳的 6.使用 Flink CDC 對(duì) MySQL 進(jìn)行流式 ETL 本教程將展示如何使用 Flink CDC 快速構(gòu)建 MySQL的流式 ETL。 假設(shè)我們將產(chǎn)品數(shù)

    2024年04月26日
    瀏覽(25)
  • MySql workBench客戶端菜單漢化最新版

    MySql workBench客戶端菜單漢化最新版

    找到Mysql Workbench安裝目錄 如:D:softMySQLMySQL Workbench 8.0 CE 進(jìn)入data目錄:D:softMySQLMySQL Workbench 8.0 CEdata 里面有main_menu.xml文件,將漢化文件覆蓋即可 main_menu.xml漢化內(nèi)容

    2024年01月19日
    瀏覽(44)
  • 最新版Flink CDC MySQL同步Elasticsearch(一)

    最新版Flink CDC MySQL同步Elasticsearch(一)

    首先我們要基于Flink CDC MySQL同步MySQL的環(huán)境基礎(chǔ)上(flink-1.17.1、Java8、MySQL8)搭建Elasticsearch7-17-10和Kibana 7.17.10。筆者已經(jīng)搭建好環(huán)境,這里不做具體演示了,如果需要Es的搭建教程情況筆者其他博客 注意: 建議生產(chǎn)環(huán)境統(tǒng)一使用穩(wěn)定版本Flink1.16.*。筆者這里只是作為教程編寫

    2024年02月13日
    瀏覽(21)
  • 忘記mysql密碼后如何修改密碼(2022最新版詳細(xì)教程保姆級(jí))

    忘記mysql密碼后如何修改密碼(2022最新版詳細(xì)教程保姆級(jí))

    一共用到兩個(gè)cmd窗口,每一個(gè)都要以管理員身份打開(kāi) ,且在修改密碼后,要先關(guān)閉第一個(gè) 跳過(guò)驗(yàn)證密碼的mysql服務(wù) 的cmd窗口,再啟動(dòng)mysql,否則會(huì)出錯(cuò)。 在修改密碼前,mysql必須處于關(guān)閉狀態(tài)。 1.以 管理員的身份 打開(kāi) cmd窗口 , 找到mysql安裝的路徑并打開(kāi)bin目錄 2.在 bin路徑

    2024年02月06日
    瀏覽(30)
  • Linux安裝最新版Docker完整教程(建議收藏)

    Linux安裝最新版Docker完整教程(建議收藏)

    1.1 查看服務(wù)器系統(tǒng)版本以及內(nèi)核版本 1.2 查看服務(wù)器內(nèi)核版本 這里我們使用的是CentOS 7.4 系統(tǒng),內(nèi)核版本為3.10 1.3 安裝依賴包 1.4 設(shè)置阿里云鏡像源 2.1 Docker版本說(shuō)明 2.2 docker-ce安裝 2.3 啟動(dòng)docker并設(shè)置開(kāi)機(jī)自啟 3.1 倉(cāng)庫(kù) (repository) 3.2 鏡像(Image) 3.3 容器(Container) 5.1 搜索鏡像 5.2

    2023年04月16日
    瀏覽(26)
  • 【ElasticSearch】Docker安裝最新版ElasticSearch 8.6.2

    【ElasticSearch】Docker安裝最新版ElasticSearch 8.6.2

    在本文中,我將為您介紹如何在 Docker 中安裝 ElasticSearch 8.6.2 。ElasticSearch是一個(gè)流行的開(kāi)源搜索和分析引擎,可以幫助您快速、準(zhǔn)確地搜索和分析數(shù)據(jù)。通過(guò)在 Docker 中安裝 ElasticSearch ,您可以輕松地部署和管理您的 ElasticSearch 實(shí)例,并確保系統(tǒng)的可移植性和可靠性。 在安裝

    2024年02月01日
    瀏覽(23)
  • 貓頭虎分享:Linux 如何安裝最新版的Docker和Docker-Compose 教程 ?

    貓頭虎分享:Linux 如何安裝最新版的Docker和Docker-Compose 教程 ?

    博主貓頭虎的技術(shù)世界 ?? 歡迎來(lái)到貓頭虎的博客 — 探索技術(shù)的無(wú)限可能! 專欄鏈接 : ?? 精選專欄 : 《面試題大全》 — 面試準(zhǔn)備的寶典! 《IDEA開(kāi)發(fā)秘籍》 — 提升你的IDEA技能! 《100天精通Golang》 — Go語(yǔ)言學(xué)習(xí)之旅! 領(lǐng)域矩陣 : ?? 貓頭虎技術(shù)領(lǐng)域矩陣 : 深入探索

    2024年02月01日
    瀏覽(100)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包