1. 程式人生 > 實用技巧 >天梯賽 周遊世界

天梯賽 周遊世界

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區別?

對應的視覺化配置如下: