如何用 Docker 來啟動 MySQL Server 下指令

Howard Yang
4 min readJan 24, 2021

--

Photo from Unsplash

由於作業系統的差異,我發現最容易開一個 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 來測試看看了。

Unlisted

--

--

Howard Yang
Howard Yang

Written by Howard Yang

Senior Full-Stack Engineer with 10+ years of experience, specialized in IoT and Computer Networking.

No responses yet