在 Compute Engine 上安裝 MySQL


如要在您建立的 Compute Engine 執行個體上手動安裝 MySQL,請完成下列步驟。

如要瞭解在 Compute Engine 上設定 MySQL 的多種選項,請參閱「Compute Engine 上的 MySQL」。如要瞭解哪些 Compute Engine 產品適合 MySQL,請參閱「在 Compute Engine 上設定 MySQL」。

事前準備

  • 使用 Google Cloud 主控台啟用 Compute Engine API
  • 安裝 Google Cloud CLI
  • 調整工作區的設定,設法讓指令變得更精簡。將下列指令中的 PROJECT_IDREGIONZONE 替換成您專案的值。如需完整的區域清單,請參閱「可用地區與區域」一節。

    gcloud config set project PROJECT_ID
    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE
    

建立 Compute Engine 執行個體並建立 SSH 連線

建立 MySQL 的 Compute Engine 執行個體,並建立 SSH 連線到新建立的執行個體。預設作業系統為 Debian 第 10 版。如果您希望在本教學課程中使用不同的作業系統,可以選擇 Compute Engine 說明文件中公開映像檔頁面所述的選項。

主控台

建立 Compute Engine 執行個體

如要在 Google Cloud console中建立 Compute Engine 執行個體,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Compute Engine VM instances」(VM 執行個體) 頁面。

    前往 Compute Engine VM 執行個體

  2. 選取新建立的專案,然後按一下 [Continue] (繼續)

  3. 按一下 [Create instance] (建立執行個體) (如果您已有執行個體,請按一下 [New instance] (新增執行個體))。將執行個體命名為「mysql-test」

  4. 選取效能等級和磁碟大小

  5. 如要指定非預設值的作業系統,請在「Boot disk」(開機磁碟) 區段中按一下「Change」(變更),設定開機磁碟的屬性。在「Public images」(公開映像檔) 分頁中選取作業系統,然後按一下「Save」(儲存)

  6. 為符合安全性最佳做法,請建立沒有外部 IP 位址的執行個體。

    展開「進階選項」和「網路」。在「Network interfaces」下方展開「default」介面,然後在「External IPv4 address」選單中選取「None」

  7. 按一下 [建立]。

設定網路位址轉譯

如要使用 Cloud NAT 設定及管理網路位址轉譯,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Cloud NAT」頁面。

    前往 Cloud NAT

  2. 按一下「開始使用」或「建立 Cloud NAT 閘道」

  3. 在「閘道名稱」中輸入 nat-simple-configuration

  4. 如要選取 Cloud Router,請在「Select Cloud Router」部分執行下列操作:

    1. 在「Network」(網路) 中選取 default
    2. 在「區域」中,選取您為 VM 指定的區域。
    3. 在「Cloud Router」部分,選取「建立新路由器」

      在隨即顯示的「Create a router」對話方塊中,輸入路由器的名稱 (例如 nat-router-simple-configuration),然後按一下「Create」

  5. 按一下 [Advanced configurations] (進階設定)

  6. 在「Logging」區段中,選取「Translation and errors」。這項設定會將 Cloud NAT 設為將所有記錄傳送至 Cloud Logging。

  7. 按一下 [建立]。

建立與 VM 的 SSH 連線

如要建立 SSH 連線,請按照下列步驟操作:

  1. 在「VM instances」(VM 執行個體) 頁面的清單中,尋找您剛剛新建的 VM 執行個體。

  2. 在該 VM 的「Connect」欄中,按一下「SSH」。SSH 終端機會在瀏覽器視窗中開啟。

gcloud

  1. 如要建立 Compute Engine 執行個體,請使用 gcloud compute instances create 指令。如要指定作業系統,請新增 --image-family 參數,後面接映像檔系列,或新增 --image 參數,後面接特定映像檔版本的映像檔名稱。舉例來說,如要使用 Debian 10 系列中的最新映像檔,請新增 --image-family debian-10。使用公開圖片���,���須使用 --image-project 參數提供圖片專案

    gcloud compute instances create \
        --image-family debian-10 \
        --image-project debian-cloud \
        --no-address \
      mysql-test
    
  2. 建立 Cloud Router。

    gcloud compute routers create nat-router-simple-configuration \
        --network=default
    
  3. 使用 Cloud NAT 設定及管理網路位址轉譯。

    gcloud compute routers nats create nat-simple-configuration \
        --router=nat-router-simple-configuration \
        --auto-allocate-nat-external-ips \
        --nat-all-subnet-ip-ranges \
        --enable-logging
    
  4. 使用 ssh 連線至執行個體。

    gcloud compute ssh \
        --tunnel-through-iap \
        mysql-test
    

    系統會使用由 Identity-Aware Proxy (IAP) 處理的 TCP 轉送功能建立 SSH 連線。

安裝 MySQL

下列步驟說明如何在 Compute Engine 執行個體上安裝 MySQL。

Debian 10 以上

這些操作說明會安裝 MySQL 8 或 5.7。

Debian 10 以上版本的套件管理系統包含 MariaDB 而非 MySQL。MariaDB 與 MySQL 通訊協定相容,但具有獨立發展的功能組合。詳情請參閱「MariaDB 與 MySQL 的差異」。

如要安裝 MySQL,請下載發布套件,然後使用 dpkg 指令手動安裝。

  1. 安裝 wget 依附元件。

    sudo apt-get install -y wget
    
  2. 下載 MySQL Community Server 發布套件。

    export DEB_FILE=mysql-apt-config_0.8.20-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  3. 確認發布套件檔案的完整性。

    cat > ${DEB_FILE}.md5 << EOL
    799bb0aefb93d30564fa47fc5d089aeb ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    如果您看到以下輸出內容,表示檔案的真實性和完整性已通過驗證:

    mysql-apt-config_0.8.20-1_all.deb: OK
    
  4. 驗證檔案後,請將 MySQL 套件新增至本��套件存放區。

    sudo dpkg -i ${DEB_FILE}
    

    系統會提示您確認安裝選項,包括 MySQL 版本。

  5. 選取頂端的「MySQL Server & Cluster」選單選項後,按下「Return」鍵,然後使用方向鍵選擇伺服器版本。

    本指南假設您會選擇 MySQL 8.0 或 5.7。選取版本後,按下鍵盤上的 Return 鍵。

  6. 確認設定選單中選取的選項無誤後,請使用方向鍵選取選單中的 Ok,然後按下鍵盤上的 Return 鍵。

  7. 更新套件快取。

    sudo apt-get update
    

    如果您收到類似「The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29」的 GPG 錯誤訊息,請使用符合下列模式的指令匯入缺少的 GPG 金鑰:

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    在示範錯誤訊息中,缺少的公開金鑰為 467B942D3A79BD29;請使用 --recv-keys 選項提供這個值。

    重複執行指令,更新套件快取。

  8. 安裝 MySQL。安裝程序會為您啟動 MySQL 服務。

    sudo apt-get -y install mysql-community-server
    

    系統會提示您提供一些安裝詳細資料,例如根密碼。

Debian 9

這些操作說明會安裝 MySQL 8 或 5.7。

根據預設,某些 Debian 版本 (例如,Debian 9) 會將 MariaDB 設為預設的 MySQL 伺服器。MariaDB 能與 MySQL 相容,且可以使用相同的指令進行叫用。如要詳細瞭解 MariaDB 與標準 MySQL 的差異,請參閱「從 MySQL 遷移至 Debian 9 中的 MariaDB」。

如要安裝 MySQL,請按照下列操作說明操作:

  1. 下載 MySQL Community Server 發布套件。

    export DEB_FILE=mysql-apt-config_0.8.17-1_all.deb
    cd /tmp
    curl -L --output ${DEB_FILE} \
         https://dev.mysql.com/get/${DEB_FILE}
    
  2. 確認發布套件檔案的完整性。

    cat > ${DEB_FILE}.md5 << EOL
    9e393c991311ead61dcc8313aab8e230 ${DEB_FILE}
    EOL
    md5sum --check ${DEB_FILE}.md5
    

    如果您看到下列輸出內容,表示檔案的真實性和完整性已通過驗證。

    mysql-apt-config_0.8.17-1_all.deb: OK
    
  3. 驗證檔案後,請將 MySQL 套件新增至本機套件存放區。

    sudo dpkg -i ${DEB_FILE}
    

    系統會提示您確認安裝選項,包括 MySQL 版本。

  4. 選取頂端的「MySQL Server & Cluster」選單選項後,按下「Return」鍵,然後使用方向鍵選擇伺服器版本。

    本指南假設您會選擇 MySQL 8.0 或 5.7。選取版本後,按下鍵盤上的 Return 鍵。

  5. 確認設定選單中選取的選項無誤後,請使用方向鍵選取選單中的 Ok,然後按下鍵盤上的 Return 鍵。

  6. 更新套件快取。

    sudo apt-get update
    

    如果您收到類似「The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 467B942D3A79BD29」的 GPG 錯誤訊息,請使用符合下列模式的指令匯入缺少的 GPG 金鑰:

    sudo apt-key adv \
        --keyserver keyserver.ubuntu.com \
        --recv-keys 467B942D3A79BD29
    

    在示範錯誤訊息中,缺少的公開金鑰為 467B942D3A79BD29;請使用 --recv-keys 選項提供這個值。

    重複執行指令,更新套件快取。

  7. 安裝 MySQL。安裝程序會為您啟動 MySQL 服務。

    sudo apt-get -y install mysql-community-server
    

Ubuntu

對於 Ubuntu 1804 以下版本,這些操作說明會安裝 MySQL 5.7
針對 Ubuntu 2004 以上版本,這些操作說明會安裝 MySQL 8

  1. 更新 apt-get 套件管理員。

    sudo apt-get update
    
  2. 安裝 MySQL。安裝程序會為您啟動 MySQL 服務。

    sudo apt-get -y install mysql-server
    
  3. 根據預設,在 Ubuntu 發行版本中,mysql 會使用 auth_socket 外掛程式驗證 root 使用者。執行以下查詢,驗證預設設定:

    echo "SELECT user, authentication_string, plugin, host
            FROM mysql.user WHERE user='root' ;" \
         | sudo mysql -t -u root
    

    輸出結果顯示,從 localhost 連線的 root 使用者會使用 auth_socket 外掛程式:

    +------+-----------------------+-------------+-----------+
    | user | authentication_string | plugin      | host      |
    +------+-----------------------+-------------+-----------+
    | root |                       | auth_socket | localhost |
    +------+-----------------------+-------------+-----------+
    
  4. 變更這個設定,並將根密碼變更為難以猜測的密碼:

    export PASSWORD=`uuidgen`; echo "Root password is : $PASSWORD"
    echo "ALTER USER 'root'@'localhost'
          IDENTIFIED WITH mysql_native_password BY '$PASSWORD'" \
          | sudo mysql -u root
    

    輸出內容包含新的根密碼:

    Root password is : 25fe2177-778a-414f-b80e-5fb8c8671de3
    

CentOS 或 RHEL 7

這些操作說明會安裝 MySQL 8。

第 7 版的 CentOS 和 RHEL 的套件管理系統現在包含 MariaDB 而非 MySQL。如要安裝 MySQL,您必須先更新套件管理員。

  1. 下載 MySQL Community Server 發布套件。

    export RPM_FILE=mysql80-community-release-el7-4.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. 確認發布套件檔案的完整性。

    cat > ${RPM_FILE}.md5 << EOL
    8b55d5fc443660fab90f9dc328a4d9ad ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    如果您看到下列輸出內容,表示檔案的真實性和完整性已通過驗證。

    mysql80-community-release-el7-4.noarch.rpm: OK
    
  3. 更新套件管理員以納入 MySQL。

    sudo rpm -Uvh ${RPM_FILE}
    
  4. 安裝 MySQL。

    sudo yum -y install mysql-community-server
    
  5. 啟動 MySQL 伺服器。

    sudo /usr/bin/systemctl start mysqld
    
  6. 從伺服器記錄取得臨時的 root 密碼

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

Rocky Linux 或 RHEL 8

這些操作說明會安裝 MySQL 8。

Rocky Linux、CentOS Stream 和 RHEL 的 8 版套件管理系統包含 MariaDB 而非 MySQL。如要安裝 MySQL,您必須先更新套件管理員。

  1. 下載 MySQL Community Server 發布套件。

    export RPM_FILE=mysql80-community-release-el8-2.noarch.rpm
    cd /tmp
    curl -L --output ${RPM_FILE} \
         https://dev.mysql.com/get/${RPM_FILE}
    
  2. 確認發布套件檔案的完整性。

    cat > ${RPM_FILE}.md5 << EOL
    0ba3feb1c9ee35d30e5ae683accaf54b ${RPM_FILE}
    EOL
    md5sum --check ${RPM_FILE}.md5
    

    如果您看到下列輸出內容,表示檔案的真實性和完整性已通過驗證。

    mysql80-community-release-el8-2.noarch.rpm: OK
    
  3. 更新套件管理員以納入 MySQL。

    sudo rpm -iUvh ${RPM_FILE}
    
  4. 安裝 MySQL。在安裝期間,請停用 AppStream 存放區,以便安裝程序使用社群伺服器。

    sudo yum module disable -y mysql
    sudo yum install -y \
        --disablerepo=appstream \
      mysql-community-server
    
  5. 啟動 MySQL 伺服器。

    sudo /usr/bin/systemctl start mysqld
    
  6. 從伺服器記錄取得臨時的 root 密碼

    sudo cat /var/log/mysqld.log | grep -i 'temporary password'
    

提升 MySQL 安裝程序的安全性

如要提升 MySQL 安裝程序的安全性,請執行 mysql_secure_installation 指令。如果您在安裝過程中沒有設定密碼,請在此步驟建立密碼。如要進一步瞭解此指令,請參閱 MySQL 說明文件中的 mysql_secure_installation 一節。

sudo mysql_secure_installation

連線至 MySQL

下列步驟說明如何從 mysql-test 執行個體連線至 MySQL。

MySQL 8.0

  1. 使用 MySQL 用戶端連線至 MySQL。

    sudo mysql -u root -p
    

    連線至 MySQL 時,提示會變更為 mysql>

    然後,您可以執行 MySQL 指令。例如,下列指令顯示正在執行的執行緒,包含目前的連線。

    mysql> SHOW processlist;
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    | Id | User            | Host      | db   | Command | Time | State                  | Info             |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    |  5 | event_scheduler | localhost | NULL | Daemon  | 1889 | Waiting on empty queue | NULL             |
    | 14 | root            | localhost | NULL | Query   |    0 | init                   | show processlist |
    +----+-----------------+-----------+------+---------+------+------------------------+------------------+
    2 rows in set (0.00 sec)

    您可以使用下列指令來產生使用者清單。

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    +------------------+-----------+------------------------------------------------------------------------+
    | User             | Host      | authentication_string                                                  |
    +------------------+-----------+------------------------------------------------------------------------+
    | mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
    | root             | localhost | $A$005$,BS{G+*#cVYxb6x40q0aFS5dp2/Kz6u2vennR5qe0eBKVA/6VW5B            |
    +------------------+-----------+------------------------------------------------------------------------+
    4 rows in set (0.00 sec)
  2. 指令執行完成後,請使用 exit 指令結束 MySQL 用戶端,然後再次使用 exit 以登出 Compute Engine 執行個體。

    mysql> exit
    Bye

MySQL 5.7

  1. 使用 MySQL 用戶端連線至 MySQL。

    sudo mysql -u root -p
    

    連線至 MySQL 時,提示會變更為 mysql>

    然後,您可以執行 MySQL 指令。例如,下列指令顯示正在執行的執行緒,包含目前的連線。

    mysql> SHOW processlist;
    +----+------+-----------+------+---------+------+-------+------------------+
    | Id | User | Host      | db   | Command | Time | State | Info             |
    +----+------+-----------+------+---------+------+-------+------------------+
    | 51 | root | localhost | NULL | Query   |    0 | NULL  | show processlist |
    +----+------+-----------+------+---------+------+-------+------------------+
    1 row in set (0.00 sec)

    您可以使用下列指令來產生使用者清單。

    mysql> SELECT User, Host, authentication_string FROM mysql.user;
    +---------------+-----------+-------------------------------------------+
    | User          | Host      | authentication_string                     |
    +---------------+-----------+-------------------------------------------+
    | root          | localhost | *A047B05AAB007B33F8F2BD1FD404661D167D6348 |
    | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    +---------------+-----------+-------------------------------------------+
    3 rows in set (0.00 sec)
  2. 指令執行完成後,請使用 exit 指令結束 MySQL 用戶端,然後再次使用 exit 以登出 Compute Engine 執行個體。

    mysql> exit
    Bye

後續步驟

  • 如要進一步瞭解 MySQL,請參閱 MySQL 官方說明文件
  • 探索 Cloud Marketplace 上使用 MySQL 的多種開發堆疊
  • ���果您的需求包括高可用性和擴充性,請考慮下列選項:
    • 在 Compute Engine 上安裝 MySQL 叢集,透過不共用的叢集功能和自動資料分割功能,提供高可用性和擴充性。
    • 點選即可部署 Percona,這是一種用於 MySQL 叢集的開放原始碼解決方案,可從 Cloud Marketplace 取得。
    • 安裝 Vitess,這是自 2011 年起處理所有 YouTube 資料庫流量的開放原始碼解決方案。Vitess 非常適合在容器中執行的應用程式。如要進一步瞭解如何在容器化環境中使用 Vitess,請參閱「在 Kubernetes 執行 Vitess」。