1、拉取mysql容器
docker pull mysql:5.7

2、創建用於掛載的目錄(日志目錄、數據目錄、配置目錄)
如果不創建掛載目錄,一旦容器重啟,則數據會全部丟失。
mkdir -p /usr/data/mysql/logs /usr/data/mysql/data /usr/data/mysql/conf

3、創建my.cnf配置文件
cd /data/mysql
touch my.cnf
然后使用vim編輯my.cnf文件,文件內容如下:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

4、創建容器
docker run --restart=always -p 3306:3306 --name mysql -v /usr/data/mysql/conf:/etc/mysql -v /usr/data/mysql/logs:/var/log/mysql -v /usr/data/mysql/data:/var/lib/mysql -v /usr/data/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
(1)如果該步驟報錯,重啟docker再運行該腳本即可(重啟命令:systemctl restart docker 由於docker是層層封裝創建容器的,因此即便是創建容器報錯,也有可能創建成功容器,因此重新執行上述命令前,需要停止並刪除已運行的mysql容器)
(2)此處注意,掛載的宿主機文件夾最好建立在有權限的文件夾下,剛開始我直接在/data下新建了相關文件夾用來掛載,容器一直重啟。

命令詳解:
--restart=always 當docker重啟時,容器也重啟
--name 容器命名
-p 3306:3306 宿主機和容器端口映射
-v(此命令中有三個-v參數) 掛載數據等內容,避免容器重啟造成的數據丟失
-e 設置環境變量(此處設置了mysql的密碼)
-d 后台啟動(容器不會因為shell的退出而停止運行)
5、連接mysql
(1)在命令行連接
進入mysql容器(可以使用名稱或容器ID進入):docker exec -it mysql bash
連接mysql服務器:mysql -uroot -p123456
創建數據庫test:create database test;

(2)使用Navicat遠程連接
點擊連接,選擇mysql,輸入ip地址與用戶名密碼,端口由於直接使用的宿主機的3306映射的mysql容器內的3306端口,因此直接寫3306即可,寫完后點擊測試鏈接,顯示連接成功即OK。
