共用方式為


快速入門:使用 Azure CLI 建立適用於 MySQL 的 Azure 資料庫 - 彈性伺服器的執行個體

本快速入門說明如何在 Azure Cloud Shell 中使用 Azure CLI 命令,於五分鐘內建立一個「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」執行個體。

如果您沒有 Azure 訂閱,請在開始之前先建立 Azure 免費帳戶。 目前,Azure 免費帳戶可讓您免費試用「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」12 個月。 如需詳細資訊,請參閱使用 Azure 免費帳戶免費試用適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

開啟 Azure Cloud Shell

Azure Cloud Shell 是免費的互動式殼層,可讓您用來執行本文中所描述的步驟。 在 Cloud Shell 中,常見的 Azure 工具已預先安裝並設定為可搭配您的帳戶使用。

若要開啟 Cloud Shell,請選取程式碼範例右上角的 [試試看]

您也可以移至 https://shell.azure.com/bash,從另一個瀏覽器索引標籤開啟 Cloud Shell。 選取 [複製] 以複製程式碼區塊的內容。 在 Cloud Shell 中,貼上程式碼,然後選取 [輸入] 來執行程式碼。

如果您想要安裝和使用 Azure CLI,本快速入門需要 Azure CLI 2.0 版或更新版本。 若要尋找 Azure CLI 安裝的版本。 ,執行 az --version。 如果您需要安裝或升級,請參閱安裝 Azure CLI 模組

先決條件

使用 az login 命令登入帳戶。 請注意 id 屬性。 id 屬性會參考 Azure 帳戶的訂用帳戶識別碼。

az login

使用 az account set 命令,選取 Azure 帳戶中的特定訂用帳戶。 請從 az login 輸出中記錄 id 的數值。

如果您有多個訂用帳戶,請選取您想要針對資源計費的訂用帳戶。 若要取得訂用帳戶的清單,請使用 az account list

az account set --subscription <subscription ID>

建立適用於 MySQL 的 Azure 資料庫彈性伺服器

使用 az group create 命令來建立 Azure 資源群組。 然後在資源群組內建立適用於 MySQL 的 Azure 資料庫彈性伺服器。 請務必提供唯一的名稱。 下列範例會在 eastus2 位置建立名為 myresourcegroup 的資源群組。

az group create --name myresourcegroup --location eastus2

使用 az mysql flexible-server create 命令建立適用於 MySQL 的 Azure 資料庫彈性伺服器。 一部伺服器可以包含多個資料庫。 下列命令會透過使用服務預設值以及來自 Azure CLI 本機內容的值來建立伺服器:

az mysql flexible-server create

所建立的伺服器具備以下屬性:

  • 自動產生的伺服器名稱、管理員使用者名稱、管理員密碼和資源群組名稱。
  • 服務預設的其餘伺服器組態:計算層級 (可高載)、計算大小/SKU (B1MS)、備份保留期限 (七天),以及 MySQL 版本 (5.7)。
  • 預設的連接方式為 私人接入(虛擬網路整合),並擁有自動產生的虛擬網路及子網路。

附註

建立伺服器之後,就無法變更連線方法。 舉例來說,如果你在建立伺服器時選擇了私人存取(虛擬網路整合),部署後你就無法將設定改成公開存取(允許的 IP 位址)。 強烈建議您建立具有私人存取權的伺服器,以使用虛擬網路整合安全地存取您的伺服器。 如需私人存取的詳細資訊,請參閱有關網路概念的文章。

如果您想要變更任何預設值,請參閱 Azure CLI 參考文件,以取得可設定的 Azure CLI 參數完整清單。

以下是範例輸出:

Creating Resource Group 'groupXXXXXXXXXX'...
Creating new vnet "serverXXXXXXXXXVNET" in resource group "groupXXXXXXXXXX"...
Creating new subnet "serverXXXXXXXXXSubnet" in resource group "groupXXXXXXXXXX" and delegating it to "Microsoft.DBforMySQL/flexibleServers"...
Creating MySQL Server 'serverXXXXXXXXX' in group 'groupXXXXXXXXXX'...
Your server 'serverXXXXXXXXX' is using SKU 'Standard_B1ms' (Paid Tier). For pricing details, see https://aka.ms/mysql-pricing.
Creating MySQL database 'flexibleserverdb'...
Make a note of your password. If you forget your password, reset the password by running 'az mysql flexible-server update -n serverXXXXXXXXX -g groupXXXXXXXXXX -p <new-password>'.
{
  "connectionString": "server=<server-name>.mysql.database.azure.com;database=flexibleserverdb;uid=secureusername;pwd=<password>",
  "databaseName": "flexibleserverdb",
  "host": "serverXXXXXXXXX.mysql.database.azure.com",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/groupXXXXXXXXXX/providers/Microsoft.DBforMySQL/flexibleServers/serverXXXXXXXXX",
  "location": "East US 2",
  "password": "<password>",
  "resourceGroup": "groupXXXXXXXXXX",
  "skuname": "Standard_B1ms",
  "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/groupXXXXXXXXXX/providers/Microsoft.Network/virtualNetworks/serverXXXXXXXXXVNET/subnets/serverXXXXXXXXXSubnet",
  "username": "secureusername",
  "version": "5.7"
}

如果您想要變更任何預設值,請參閱 Azure CLI 參考文件,以取得可設定的 Azure CLI 參數完整清單。

建立資料庫

如果您尚未建立資料庫,請執行下列命令來建立名為 newdatabase 的資料庫:

az mysql flexible-server db create -d newdatabase

附註

連線至適用於 MySQL 的 Azure 資料庫 - 彈性伺服器時,需透過連接埠 3306 進行通訊。 如果您嘗試從企業網路內部進行連線,通過連接埠 3306 的輸出流量可能不被允許。 除非 IT 部門開啟連接埠 3306,否則您無法連線到您的伺服器。

取得連線資訊。

若要連線到您的伺服器,您必須提供主機資訊和存取認證:

az mysql flexible-server show --resource-group myresourcegroup --name mydemoserver

結果以 JSON 格式呈現。 記下 fullyQualifiedDomainNameadministratorLogin 的值。 以下是 JSON 輸出的範例:

{
  "administratorLogin": "myadminusername",
  "administratorLoginPassword": null,
  "delegatedSubnetArguments": {
    "subnetArmResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/mydemoserverVNET/subnets/mydemoserverSubnet"
  },
  "fullyQualifiedDomainName": "mydemoserver.mysql.database.azure.com",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.DBforMySQL/flexibleServers/mydemoserver",
  "location": "East US 2",
  "name": "mydemoserver",
  "publicNetworkAccess": "Disabled",
  "resourceGroup": "myresourcegroup",
  "sku": {
    "capacity": 0,
    "name": "Standard_B1ms",
    "tier": "Burstable"
  },
  "storageProfile": {
    "backupRetentionDays": 7,
    "fileStorageSkuName": "Premium_LRS",
    "storageAutogrow": "Disabled",
    "storageIops": 0,
    "storageMb": 10240
  },
  "tags": null,
  "type": "Microsoft.DBforMySQL/flexibleServers",
  "version": "5.7"
}

使用 Azure CLI 連線及測試連線

您可以使用適用於 MySQL 的 Azure 資料庫 - 彈性伺服器,使用 Azure CLI 中的 az mysql flexible-server connect 命令連線到您的彈性伺服器。 您可以使用此命令來測試資料庫伺服器的連線能力、建立快速的基本資料庫,以及直接對伺服器執行查詢,而不需要安裝 mysql.exe 或 MySQL Workbench。 您也可以在互動式模式中使用該命令,一次執行多個查詢。

執行下列指令碼,以測試及驗證從開發環境連線到資料庫:

az mysql flexible-server connect -n <servername> -u <username> -p <password> -d <databasename>

以下是範例:

az mysql flexible-server connect -n mysqldemoserver1 -u dbuser -p "dbpassword" -d newdatabase

在成功的連線中,會出現類似下列範例的輸出:

Connecting to newdatabase database.
Successfully connected to mysqldemoserver1.

如果連線失敗,請嘗試這些解決方案:

  • 檢查用戶端電腦上是否已開啟連接埠 3306。
  • 確認您的伺服器管理員使用者名稱和密碼正確無誤。
  • 確認您已為用戶端電腦設定防火牆規則。
  • 如果您將伺服器設定為虛擬網路中的私人存取,請確保用戶端電腦與伺服器位於相同的虛擬網路中。

若要執行單一查詢,請使用 --querytext 引數 (-q):

az mysql flexible-server connect -n <server-name> -u <username> -p "<password>" -d <database-name> --querytext "<query text>"

以下是範例:

az mysql flexible-server connect -n mysqldemoserver1 -u dbuser -p "dbpassword" -d newdatabase -q "select * from table1;" --output table

欲了解更多使用 az mysql flexible-server connect資訊,請參閱 快速入門:使用 Azure CLI 連接 MySQL 的 Azure Database - Flexible Server

使用 MySQL 命令列用戶端進行連線

如果您使用私人存取與虛擬網路整合建立適用於 MySQL 的 Azure 資料庫彈性伺服器,請從與伺服器位於相同虛擬網路中的資源連線到您的伺服器。 您可以建立虛擬機器,並將其新增至建立適用於 MySQL 的 Azure 資料庫 - 彈性伺服器執行個體時所建立的虛擬網路。 若要深入了解,請參閱使用 Azure 入口網站為適用於 MySQL 的 Azure 資料庫 - 彈性伺服器建立及管理虛擬網路

如果您使用公用存取 (允許的 IP 位址) 建立適用於 MySQL 的 Azure 資料庫 - 彈性伺服器執行個體,則可以將您的本機 IP 位址新增至伺服器的防火牆規則清單。 如需詳細指引,請參閱使用 Azure 入口網站管理適用於 MySQL 的 Azure 資料庫 - 彈性伺服器的防火牆規則

若要從本機環境連線到伺服器,您可以使用 mysql.exe使用 MySQL Workbench 搭配適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器支援使用傳輸層安全性 (TLS) 將用戶端應用程式連線到適用於 MySQL 的 Azure 資料庫 - 彈性伺服器服務,先前稱為安全通訊端層 (SSL)。 TLS 為業界標準通訊協定,可確保資料庫伺服器與用戶端應用程式之間的網路連線經過加密,讓您遵守合規性需求。 若要使用適用於 MySQL 的 Azure 資料庫彈性伺服器進行連線,請下載憑證授權單位驗證的公用 SSL 憑證。 若要深入了解如何使用加密連線進行連線或停用 SSL,請參閱使用加密連線來連線至適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

下列範例示範如何使用 MySQL 命令行用戶端工具連線到適用於 MySQL 的 Azure 資料庫彈性伺服器。

  • 下載 DigiCertGlobalRootG2 證書。
  • 使用 --ssl-mode=REQUIRED 連接字串設定來強制執行 TLS/SSL 憑證驗證。
  • 將本機憑證檔案路徑傳遞至 --ssl-ca 參數。
  • 以實際的伺服器名稱和密碼取代這些值。
sudo apt-get install mysql-client
wget --no-check-certificate https://dl.cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem
mysql -h mydemoserver.mysql.database.azure.com -u mydemouser -p --ssl-mode=REQUIRED --ssl-ca=DigiCertGlobalRootG2.crt.pem

如果你的伺服器有公開存取權,你可以使用 Azure Cloud Shell

若要使用 Azure Cloud Shell 連線到您的適用於 MySQL 的 Azure 資料庫彈性伺服器,請允許從 Azure Cloud Shell 到適用於 MySQL 的 Azure 資料庫彈性伺服器的網路存取。 若要允許存取,請前往適用於 MySQL 的 Azure 資料庫彈性伺服器的 Azure 入口網站 [網路] 窗格。 在 [防火牆] 底下,選取 [允許從 Azure 內的任何 Azure 服務存取此伺服器] 核取方塊,如下列螢幕擷取畫面所示。 然後選取 [儲存] 以保存設定。

這張截圖顯示如何授權 Azure Cloud Shell 存取 Azure Database for MySQL Flexible Server。

附註

僅在開發或測試環境中,選取 [允許任何 Azure 服務從 Azure 內部公用存取此伺服器]。 此設定會設定防火牆,以允許從配置給任何 Azure 服務或資產的 IP 位址連線,包括來自其他 Azure 訂用帳戶的連線。

選取 [試用] 以開啟 Azure Cloud Shell。 在 Cloud Shell 中,使用下列命令連線到您的適用於 MySQL 的 Azure 資料庫彈性伺服器。 在命令中使用您的伺服器名稱、使用者名稱和密碼。

wget --no-check-certificate https://dl.cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem
mysql -h mydemoserver.mysql.database.azure.com -u mydemouser -p --ssl=true --ssl-ca=DigiCertGlobalRootG2.crt.pem

重要事項

當您使用 Cloud Shell 連線到適用於 MySQL 的 Azure 資料庫彈性伺服器時,請使用 --ssl=true 參數。 請勿使用 --ssl-mode=REQUIRED

本指南很重要的主要原因是 Azure Cloud Shell 已預安裝來自 MariaDB 發行版的 mysql.exe 用戶端。 mysql.exe 用戶端需要 --ssl 參數。 Oracle 發行版中的 MySQL 用戶端需要 --ssl-mode 參數。

如果您在連線到適用於 MySQL 的 Azure 資料庫彈性伺服器時看到下列錯誤訊息,表示您可能在設定防火牆規則時未選取 [允許從 Azure 內的任何 Azure 服務存取此伺服器] 核取方塊,或未儲存選項。 設定防火牆規則,然後再試一次。

ERROR 2002 (HY000): Can't connect to MySQL server on <servername> (115)

清除資源

如果您不需要使用您在另一個快速入門或教學課程中為本文建立的資源,您可以執行下列命令來刪除它們:

az group delete --name myresourcegroup

只刪除彈性伺服器:

az mysql flexible-server delete --resource-group myresourcegroup --name mydemoserver