快速入門:使用 Azure CLI 建立 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器實例
適用於:適用於 MySQL 的 Azure 資料庫 - 彈性伺服器
本快速入門說明如何在 Azure Cloud Shell 中使用 Azure CLI 命令,在五分鐘內建立 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器的實例。
如果您沒有 Azure 訂用帳戶,請在開始之前建立 Azure 免費帳戶 。 目前,Azure 免費帳戶可讓您免費試用「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」12 個月。 如需詳細資訊,請參閱免費試用適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。
開啟 Azure Cloud Shell
Azure Cloud Shell 是免費的互動式殼 層,可用來執行本文中所述的步驟。 在 Cloud Shell 中,常見的 Azure 工具會預安裝並設定為與您的帳戶搭配使用。
若要開啟 Cloud Shell,請在程式代碼範例右上角選取 [試用]。
您也可以移至 https://shell.azure.com/bash,從另一個瀏覽器索引標籤開啟 Cloud Shell。 選取 [ 複製 ] 以複製程式代碼區塊的內容。 在 Cloud Shell 中,貼上程式代碼,然後選取 Enter 來執行程式代碼。
如果您想要安裝和使用 Azure CLI,本快速入門需要 Azure CLI 2.0 版或更新版本。 若要尋找 Azure CLI 安裝的版本。 ,執行 az --version
。 如果您需要安裝或升級,請參閱安裝 Azure CLI 模組。
必要條件
使用 az login 命令登入您的帳戶。 id
請注意 屬性。 屬性 id
會參考 Azure 帳戶的訂用帳戶標識碼。
az login
使用 az account set 命令,選取 Azure 帳戶中的特定訂用帳戶。 記下 id
輸出中的 az login
值,以做為命令中自變數的值 subscription
。
如果您有多個訂用帳戶,請選取要向資源計費的訂用帳戶。 若要取得訂用帳戶的清單,請使用 az account list。
az account set --subscription <subscription ID>
建立適用於 MySQL 的 Azure 資料庫彈性伺服器
使用 命令建立 Azure 資源群組。az group create
然後在資源群組內建立 適用於 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)、備份保留期間(7 天),以及 MySQL 版本(5.7)。
- 默認連線方法是 私人存取(VNet 整合),具有自動產生的虛擬網路和子網。
注意
建立伺服器之後,就無法變更連線方法。 例如,如果您在建立伺服器時選取 [私人存取] [VNet 整合],則無法在部署后將設定變更為 [公用存取] (允許的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=serverXXXXXXXXX.mysql.database.azure.com;database=flexibleserverdb;uid=secureusername;pwd=securepasswordstring",
"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": "securepasswordstring",
"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 格式。 記下和administratorLogin
的值fullyQualifiedDomainName
。 以下是 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 資料庫 - 彈性伺服器,使用 az mysql flexible-server connect
Azure CLI 中的 命令連線到彈性伺服器。 您可以使用此命令來測試資料庫伺服器的連線能力、建立快速的基本資料庫,以及直接對伺服器執行查詢,而不需要安裝 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 命令行用戶端進行連線
如果您使用私人存取與虛擬網路整合建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器,請從與伺服器位於相同虛擬網路中的資源連線到您的伺服器。 您可以建立虛擬機,並將其新增至建立 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器實例時所建立的虛擬網路。 若要深入瞭解,請參閱 設定私人存取。
如果您使用公用存取(允許的IP位址)建立 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器實例,您可以將本機IP位址新增至您伺服器上的防火牆規則清單。 如需詳細指引,請參閱 建立或管理防火牆規則。
若要從本機環境連線到伺服器,您可以使用 mysql.exe 或 MySQL Workbench。 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器支援使用傳輸層安全性 (TLS) 將用戶端應用程式連線到 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器服務,先前稱為安全套接字層 (SSL)。 TLS 是業界標準通訊協定,可確保資料庫伺服器與用戶端應用程式之間的加密網路連線,因此您可以遵守合規性需求。 若要使用 適用於 MySQL 的 Azure 資料庫 彈性伺服器進行連線,請下載證書頒發機構單位驗證的公用 SSL 憑證。 若要深入瞭解如何使用加密連線或停用 SSL 進行連線,請參閱使用加密連線到 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器。
下列範例示範如何使用 MySQL 命令行用戶端工具連線到您的 適用於 MySQL 的 Azure 資料庫 彈性伺服器。 如果尚未安裝此工具,您可以安裝此工具。 下載 SSL 連線所需的 DigiCertGlobalRootCA 憑證。 使用 --ssl-mode=REQUIRED
連接字串設定來強制執行 TLS/SSL 憑證驗證。 將本地憑證檔案路徑傳遞至 --ssl-ca
參數。 以實際的伺服器名稱和密碼取代這些值。
sudo apt-get install mysql-client
wget --no-check-certificate https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
mysql -h mydemoserver.mysql.database.azure.com -u mydemouser -p --ssl-mode=REQUIRED --ssl-ca=DigiCertGlobalRootCA.crt.pem
如果您使用公用存取布建 適用於 MySQL 的 Azure 資料庫 彈性伺服器,您也可以使用 Azure Cloud Shell,使用預安裝 MySQL 用戶端連線到您的 適用於 MySQL 的 Azure 資料庫 彈性伺服器。
若要使用 Azure Cloud Shell 連線到您的 適用於 MySQL 的 Azure 資料庫 彈性伺服器,請允許從 Azure Cloud Shell 到 適用於 MySQL 的 Azure 資料庫 彈性伺服器的網路存取。 若要允許存取,請移至 適用於 MySQL 的 Azure 資料庫 彈性伺服器的 [Azure 入口網站 網络] 窗格。 在 [防火牆] 底下,選取 [ 允許從 Azure 內的任何 Azure 服務存取此伺服器 ] 複選框,如下列螢幕快照所示。 然後選取 [ 儲存 ] 以儲存設定。
注意
選取 [允許從 Azure 內的任何 Azure 服務對這部伺服器 進行公用存取],以進行開發或測試。 此設定會設定防火牆,以允許從配置給任何 Azure 服務或資產的 IP 位址連線,包括來自其他 Azure 訂用帳戶的連線。
選取 [ 試用] 以開啟 Azure Cloud Shell。 在 Cloud Shell 中,使用下列命令連線到您的 適用於 MySQL 的 Azure 資料庫 彈性伺服器。 在命令中使用您的伺服器名稱、使用者名稱和密碼。
wget --no-check-certificate https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
mysql -h mydemoserver.mysql.database.azure.com -u mydemouser -p --ssl=true --ssl-ca=DigiCertGlobalRootCA.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