分享方式:


使用 Azure CLI 建立和管理適用於 MySQL 的 Azure 資料庫 - 彈性伺服器的 Private Link

適用於:適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

在本文中,您會了解如何使用 Azure CLI 建立私人端點,以從 VNet 中的 VM 存取適用於 MySQL 的 Azure 資料庫彈性伺服器。

啟動 Azure Cloud Shell

Azure Cloud Shell 是免費的互動式 Shell,可讓您用來執行本文中的步驟。 其已預先安裝和設定標準 Azure 工具,可與您的帳戶搭配使用。

若要開啟 Cloud Shell,請選取程式碼區塊右上角的 [試試看]。 您也可以移至 https://shell.azure.com/bash,從另一個瀏覽器索引標籤開啟 Cloud Shell。 選取 [複製] 即可複製程式碼區塊,將它貼到 Cloud Shell 中,然後選取 Enter 鍵加以執行。

如果您偏好在本機安裝和使用 CLI,本快速入門需要有 Azure CLI 2.0 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

必要條件

您必須使用 az login 命令登入您的帳戶。 請注意 id 屬性,這是指您的 Azure 帳戶的訂用帳戶識別碼

az login

使用 az account set 命令來選取您帳戶底下的特定訂用帳戶。 在命令中,記下 az login 輸出中的 id 值,以作為訂用帳戶引數的值。 如果您有多個訂用帳戶,請選擇資源計費的適當訂用帳戶。 使用 az account list,以取得您的所有訂用帳戶。

az account set --subscription <subscription id>

建立資源群組

建立任何資源之前,您必須先建立資源群組來裝載虛擬網路。 使用 az group create 來建立資源群組。 下列範例會在 westeurope 位置建立名為 myResourceGroup 的資源群組:

az group create --name myResourceGroup --location westeurope

建立虛擬網路

使用 az network vnet create 建立虛擬網路。 此範例會建立一個名為 myVirtualNetwork 的預設虛擬網路,其中含有一個名為 mySubnet 的子網路:

az network vnet create \
 --name myVirtualNetwork \
 --resource-group myResourceGroup \
 --subnet-name mySubnet

停用子網路的私人端點原則

Azure 會將資源部署到虛擬網路內的子網路,因此您必須建立或更新子網路,以停用私人端點網路原則。 使用 az network vnet subnet update 來更新名為 mySubnet 的子網路設定:

az network vnet subnet update \
 --name mySubnet \
 --resource-group myResourceGroup \
 --vnet-name myVirtualNetwork \
 --disable-private-endpoint-network-policies true

建立 VM

使用 az vm create 建立 VM。 出現提示時,請提供密碼以作為 VM 的登入認證。 此範例會建立名為 myVm 的 VM:

az vm create \
  --resource-group myResourceGroup \
  --name myVm \
  --image Win2019Datacenter

注意

記錄 VM 的公用 IP 位址,因為在下一個步驟中需要用此位址從網際網路連線。

在資源群組中建立具有公用存取權的適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體

建立具有公用存取權的適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體,並新增用戶端 IP 位址來加以存取。

az mysql flexible-server create \
  --name mydemoserver \
  --resource-group myResourcegroup \
  --location westeurope \
  --admin-user mylogin \
  --admin-password <server_admin_password> \
  --public-access <my_client_ip>

注意

在某些案例中,適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體和 VNet 子網路會位於不同訂用帳戶。 在這些情況下,您必須確保下列設定:

  • 請確定這兩個訂閱都已註冊 Microsoft.DBforMySQL/flexibleServer 資源提供者。 如需詳細資訊,請參閱 resource-manager-registration

建立私人端點

在虛擬網路中為適用於 MySQL 的 Azure 資料庫彈性伺服器建立私人端點:

az network private-endpoint create \
    --name myPrivateEndpoint \
    --resource-group myResourceGroup \
    --vnet-name myVirtualNetwork  \
    --subnet mySubnet \
    --private-connection-resource-id $(az resource show -g myResourcegroup -n mydemoserver --resource-type "Microsoft.DBforMySQL/flexibleServers" --query "id" -o tsv) \
    --group-id mysqlServer \
    --connection-name myConnection \
    --location location

設定私人 DNS 區域

為適用於 MySQL 的 Azure 資料庫彈性伺服器網域建立私人 DNS 區域,並建立與虛擬網路的關聯連結。

az network private-dns zone create --resource-group myResourceGroup \
   --name  "privatelink.mysql.database.azure.com"
az network private-dns link vnet create --resource-group myResourceGroup \
   --zone-name  "privatelink.mysql.database.azure.com"\
   --name MyDNSLink \
   --virtual-network myVirtualNetwork \
   --registration-enabled false

# Query for the network interface ID
$networkInterfaceId=$(az network private-endpoint show --name myPrivateEndpoint --resource-group myResourceGroup --query 'networkInterfaces[0].id' -o tsv)

az resource show --ids $networkInterfaceId --api-version 2019-04-01 -o json
# Copy the content for privateIPAddress and FQDN matching the MySQL flexible server name

# Create DNS records
az network private-dns record-set a create --name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup
az network private-dns record-set a add-record --record-set-name myserver --zone-name privatelink.mysql.database.azure.com --resource-group myResourceGroup -a <Private IP Address>

注意

客戶 DNS 設定中的 FQDN 不會解析為已設定的私人 IP。 對於已設定的 FQDN,您必須設定 DNS 區域,如此處所示。

從網際網路連線至 VM

從網際網路連線至 VM:myVm,如下所示:

  1. 在入口網站的搜尋列中,輸入 myVm

  2. 選取 [連線] 按鈕。 選取 [連線] 按鈕之後,隨即會開啟 [連線至虛擬機器]

  3. 選取 [下載 RDP 檔案]。 Azure 會建立一個「遠端桌面通訊協定」(.rdp) 檔案,並下載至您的電腦。

  4. 開啟 downloaded.rdp 檔案。

    1. 如果出現提示,請選取 [連接]

. 輸入在建立 VM 時所指定的使用者名稱與密碼。 >[!注意] > 您可能需要選取 [更多選擇使用其他帳戶],以指定您在建立 VM 時輸入的認證。

  1. 選取 [確定]。

  2. 您可能會在登入程序期間收到憑證警告。 如果您收到憑證警告,請選取 [是] 或 [繼續]

  3. 當 VM 桌面出現之後,將它最小化以回到您的本機桌面。

從 VM 私人存取適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體

  1. 在 myVm 的遠端桌面中,開啟 PowerShell。

  2. 輸入 nslookup mydemomysqlserver.privatelink.mysql.database.azure.com

    您將收到如下訊息:

    Server:  UnKnown
    Address:  168.63.129.16
    Non-authoritative answer:
    Name:    mydemomysqlserver.privatelink.mysql.database.azure.com
    Address:  10.1.3.4
    
  3. 使用任何可用的用戶端,測試適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體的私人連結連線。 下列範例會使用 MySQL Workbench 來執行此作業。

  4. 在 [新增連線] 中,輸入或選取這項資訊:

    設定
    連線名稱 選取您所選擇的連線名稱。
    主機名稱 選取 mydemoserver.privatelink.mysql.database.azure.com
    使用者名稱 輸入在建立適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體期間所提供的使用者名稱 (格式為 username@servername)。
    密碼 輸入在建立適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體期間所提供的密碼。
  5. 選取 Connect。

  6. 瀏覽左側功能表中的資料庫。

  7. (選擇性) 從適用於 MySQL 的 Azure 資料庫彈性伺服器資料庫建立或查詢資訊。

  8. 關閉對 myVm 的遠端桌面連線。

清除資源

您可以使用 az group delete 來移除不再需要的資源群組,以及其所具有的所有資源:

az group delete --name myResourceGroup --yes

列出可私人連結的子資源 (groupId)

az network private-link-resource list --id {PrivateLinkResourceID}  // or -g MyResourceGroup -n MySA --type Microsoft.Storage/storageAccounts

列出指定資源上的私人端點連線

az network private-endpoint-connection list --id {PrivateLinkResourceID}

核准指定資源上的私人端點連線

az network private-endpoint-connection approve --id {PrivateEndpointConnectionID}  --description "Approved!"

拒絕指定資源上的私人端點連線

az network private-endpoint-connection reject --id {PrivateEndpointConnectionID}  --description "Rejected!"

刪除指定資源上的私人端點連線

az network private-endpoint-connection delete --id {PrivateEndpointConnectionID}

下一步