如何用 Docker 來啟動 MySQL Server 下指令
4 min readJan 24, 2021
--
由於作業系統的差異,我發現最容易開一個 MySQL Server 並且有 Client 端程式可以下指令的方是就是使用 Docker,不論你的作業系統是 Mac / Windows / Linux,只要安裝了 Docker 就可以輕鬆連進去下指令了。
以下就詳細解說如何用 Docker 啟動 MySQL Server!
用 Docker 啟動 MySQL Server
用 docker run [OPTIONS] mysql:5.7
啟動一個 MySQL Server 5.7 版的 image,版本號這裡用先用 5.7 但不寫或選擇其他的版本都可以。
$ docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
其中參數的用途
-d
是 detach 的意思,用於讓 container 跑在背景,這樣我們就可以在同一個 terminal tab 裡面繼續下指令--name mysql
用來指定這個 container 的名稱,到時候要用操作實用我們自定義的名稱比較方便-p 3306:3306
來連接 host 及 container 的 port,讓我們可以在本機端也透過3306
這個 port 連到 container-e MYSQL_ROOT_PASSWORD
指定環境變數 MySQL Server 的 root 密碼,這是必填的環境變數,不然會沒辦法登入 Server(會出現錯誤訊息You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
)
進入 MySQL Server 的容器,使用 MySQL CLI
啟動 Docker container 後,使用 docker ps
來看目前 container 的狀況,應該可以看到運行的 container,這時我們可以下 docker exec
的指令執行 MySQL CLI
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4cc6bb1adc15 mysql:5.7 "docker-entrypoint.s…" 2 seconds ago Up 2 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql$ docker exec -it mysql mysql -uroot -proot
...
mysql>
其中 docker exec
的指令是用來在運行中的 container 執行某個指令
-it
為-i -t
的簡寫,這兩個 options 很常用-i
是 interactive 的意思,讓程式持續接收你下的指令-t
是給我一個下指令的介面- 中間的
mysql
就是我們在啟動 container 時取的名字 - 最後的
mysql -uroot -proot
是我們要對 container 執行的指令,
其中mysql
為 MySQL 的 client 端 CLI-uroot
使用root
為 user 登入(和-u root
意思一樣)-proot
使用root
為 password(也可以單寫-p
就好,再手動輸入密碼),這裡的密碼是我們啟動 container 時所設定的MYSQL_ROOT_PASSWORD
唷
下完一堆指令後,跑出歡迎訊息及 mysql>
就表示成功了!可以下一些 MySQL 的 Query 來測試看看了。