小冰框架 X 套件解鎖更新:X Presenter 三步實現 AI 虛擬人類演講互動
Docker安裝MySql
目錄一、搜尋mysql的映象
1、方式1
在官網Docker Hub上搜索:https://hub.docker.com
點選進去,右側有下載的命令,複製執行即可安裝最新版的mysql:
安裝老版本的Mysql:
2、方式2
在命令列使用docker search mysql
:
拉取mysql映象(預設是最新版本):
$ docker pull mysql
如果需要指定版本號,使用:
$ docker pull mysql:版本號
這種方式搜尋不能檢視版本號,建議到Docker Hub搜尋下載。
二、檢視Mysql映象是否下載成功
#檢視所有映象
$ docker images
三、建立Mysql容器
1、官網描述
建議檢視官網的說明:https://hub.docker.com/_/mysql?tab=description
2、建立容器
$ docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.31
引數說明:
--name mysql01
:--name指定建立容器的名稱,mysql01為容器的名稱。-e
:指定mysql的引數,如:MYSQL_ROOT_PASSWORD=root,指定mysql的密碼為"root"。-d
:允許容器後臺執行。mysql:tag
要使用的mysql的映象,tag是mysql的版本號。
執行之後,使用docker ps
檢視正在執行的容器:
進入mysql容器:
$ docker exec -it mysql01 bash
退出容器:
#退出mysql
$ exit
#退出msql容器
$ exit
這種情況下,mysql容器是能運行了,但在外部使用連線工具如:sqlyog或者Navicat還不能連線成功!!!
因此還需要加入埠對映,即主機(這裡指Linux)與mysql容器的埠對映,只有加入了埠對映,才能通過ip+port在外部通過視覺化工具中進行連線。
$ docker run --name mysql02 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.31
引數說明:
-p 3306:3306
:將主機的3306埠和mysql容器的3306埠進行對映,外部可通過主機ip+3306訪問到mysql容器。
以下說明連線成功:
3、掛載目錄
在主機建立資料夾:
mkdir /my/own/datadir
#賦予該資料夾許可權,因為需要讀寫操作
chmod 777 /my/own/datadir
建立容器:
docker run --name mysql03 -p 3306:3306 -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:5.7.31
引數說明:
-
--name mysql03
:指定容器的名稱為mysql03 -
-p 3306:3306
:主機埠和mysql容器埠對映,可在外部通過視覺化工具使用主機ip+3306連線mysql容器。 -
-v /my/own/datadir:/var/lib/mysql
:將/var/lib/mysql
掛載到主機資料夾/my/own/datadir
。什麼是掛載,為什麼要掛載?
掛載指的就是將裝置檔案(例如容器)中的目錄連線到 Linux 根目錄下的某一目錄(最好是空目錄),訪問此目錄就等同於訪問裝置檔案。
-
-e MYSQL_ROOT_PASSWORD=root
:引數設定,設定mysql的密碼為root。 -
--privileged=true
:賦予mysql容器許可權,否者會掛載失敗!!!為什麼會掛載失敗?
一個容器啟動成功後,裡面的服務無法成功訪問,這是因為centos7中的安全模組selinux把許可權禁掉了。
-
-d
:允許容器後臺執行。 -
mysql:5.7.31
:指定使用哪個mysql映象。
掛載成功之後,就可以在主機目錄中看到mysql容器儲存的資料了。
4、改變所有表的預設編碼為UTF-8和排序規則
$ docker run --name mysql04 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.31 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
什麼是utf8mb4,與utf8有什麼關係?
MySQL在5.5.3之後增加了這個utf8mb4的編碼,mb4就是most bytes 4的意思,專門用來相容四位元組的unicode。好在utf8mb4是utf8的超集,除了將編碼改為utf8mb4外不需要做其他轉換。當然,為了節省空間,一般情況下使用utf8也就夠了。
那上面說了既然utf8能夠存下大部分中文漢字,那為什麼還要使用utf8mb4呢? 原來mysql支援的 utf8 編碼最大字元長度為 3 位元組,如果遇到 4 位元組的寬字元就會插入異常了。包括 Emoji 表情(Emoji 是一種特殊的 Unicode 編碼,常見於 ios 和 android 手機上),和很多不常用的漢字,以及任何新增的 Unicode 字元等等。
更多可檢視:mysql中utf8和utf8mb4區別?
對應的視覺化配置如下: