使用 Azure CLI 建立和管理適用於 MySQL 的 Azure 資料庫 - 彈性伺服器的 Private Link
在本文中,您將瞭解如何使用 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,如下所示:
在入口網站的搜尋列中,輸入 myVm。
選取 [連線] 按鈕。 選取 [連線] 按鈕之後,隨即會開啟 [連線至虛擬機器]。
選取 [下載 RDP 檔案]。 Azure 會建立一個「遠端桌面通訊協定」(.rdp) 檔案,並下載至您的電腦。
開啟 downloaded.rdp 檔案。
- 如果出現提示,請選取 [連接]。
. 輸入在建立 VM 時所指定的使用者名稱與密碼。
> [!附註]
>您可能需要選取 [更多選擇使用其他帳戶],以指定您在建立 VM 時輸入的認證。
選取 [確定]。
您可能會在登入過程中收到憑證警告。 如果您收到憑證警告,請選取 [是] 或 [繼續]。
當 VM 桌面出現之後,將它最小化以回到您的本機桌面。
從 VM 私下存取 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例
在 myVm 的遠端桌面中,開啟 PowerShell。
輸入
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
使用任何可用的客戶端,測試 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例的私人連結連線。 下列範例會使用 MySQL Workbench 來執行此作業。
在 [新增連線] 中,輸入或選取這項資訊:
設定 值 連線名稱 選取您所選擇的連線名稱。 主機名稱 選取 mydemoserver.privatelink.mysql.database.azure.com 使用者名稱 輸入使用者名稱作為建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例期間所提供的username@servername。 密碼 輸入 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例建立期間提供的密碼。 選取 Connect。
瀏覽左側功能表中的資料庫。
(選擇性)從 適用於 MySQL 的 Azure 資料庫 彈性伺服器資料庫建立或查詢資訊。
關閉對 myVm 的遠端桌面連線。
清除資源
您可以使用 az group delete
來移除不再需要的資源群組,以及其所具有的所有資源:
az group delete --name myResourceGroup --yes
其他 Private Link CLI 命令
列出可私人連結的子資源 (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}