你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 Azure CLI 创建 Azure Database for MySQL - 灵活服务器的实例

适用于:Azure Database for MySQL - 灵活服务器

本快速入门教程介绍如何使用 Azure Cloud Shell 中的 Azure CLI 在 5 分钟内创建 Azure Database for MySQL - 灵活服务器实例。

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户。 目前,通过 Azure 免费帐户,可以在 12 个月内免费试用 Azure Database for MySQL - 灵活服务器。 有关详细信息,请参阅免费试用 Azure Database for MySQL - 灵活服务器

打开 Azure Cloud Shell

Azure Cloud Shell 是免费的交互式 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 帐户订阅 ID。

az login

使用 az account set 命令选择 Azure 帐户中的特定订阅。 记下 az login 输出中的 id 值,以用作命令中 subscription 参数的值。

如有多个订阅,请选择要在其中对资源计费的订阅。 要获取订阅列表,请使用 az account list

az account set --subscription <subscription ID>

创建 Azure Database for MySQL 灵活服务器

使用 az group create 命令创建 Azure 资源组。 然后在资源组中创建 Azure Database for MySQL 灵活服务器。 请务必提供唯一的名称。 以下示例在 eastus2 位置创建名为 myresourcegroup 的资源组。

az group create --name myresourcegroup --location eastus2

使用 az mysql flexible-server create 命令创建 Azure Database for MySQL 灵活服务器。 一个服务器可以包含多个数据库。 以下命令会使用服务默认值和 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

注意

与 Azure Database for MySQL - 灵活服务器的连接使用端口 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 连接并测试连接

可以使用 Azure Database for MySQL - 灵活服务器在 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 for MySQL 灵活服务器,则需要从与服务器位于同一虚拟网络中的资源连接到服务器。 可以创建虚拟机,并将其添加到创建 Azure Database for MySQL - 灵活服务器实例时所创建的虚拟网络。 要了解详细信息,请参阅配置专用访问

如果使用公共访问(允许的 IP 地址)创建了 Azure Database for MySQL - 灵活服务器实例,则可以将本地 IP 地址添加到服务器上的防火墙规则列表。 有关详细指导,请参阅创建或管理防火墙规则

要从本地环境连接到服务器,可以使用 mysql.exeMySQL Workbench。 Azure Database for MySQL - 灵活服务器支持使用和传输层安全性 (TLS)(以前称为安全套接字层 [SSL])将客户端应用程序连接到 Azure Database for MySQL - 灵活服务器服务。 TLS 是一种行业标准协议,可确保在数据库服务器与客户端应用程序之间实现加密网络连接,以便遵循合规性要求。 要使用 Azure Database for MySQL 灵活服务器进行连接,请下载公共 SSL 证书以对证书颁发机构进行验证。 要详细了解如何使用加密连接进行连接或禁用 SSL,请参阅使用加密连接来连接 Azure Database for MySQL - 灵活服务器

以下示例演示了如何通过使用 mysql 命令行客户端工具连接到 Azure Database for MySQL 灵活服务器。 如果尚未安装,则可以安装该工具。 下载 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

如果使用公共访问预配了 Azure Database for MySQL 灵活服务器,也可以使用 Azure Cloud Shell 通过预安装的 MySQL 客户端连接到 Azure Database for MySQL 灵活服务器。

要使用 Azure Cloud Shell 连接到 Azure Database for MySQL 灵活服务器,请允许从 Azure Cloud Shell 对 Azure Database for MySQL 灵活服务器进行网络访问。 要允许访问,请转到 Azure Database for MySQL 灵活服务器的 Azure 门户“网络”窗格。 在“防火墙”下,选中“允许从 Azure 中的任何 Azure 服务对此服务器进行公共访问”复选框,如以下屏幕截图所示。 然后选择“保存”以保留设置

Screenshot that shows how to grant Azure Cloud Shell access to an Azure Database for MySQL flexible server for public access network configuration.

注意

选择“允许从 Azure 中任何 Azure 服务对此服务器进行公共访问”仅针对开发或测试用途。 此设置可将防火墙配置为允许来自分配给任何 Azure 服务或资产的 IP 地址的连接,包括来自其他 Azure 订阅的连接。

选择“试用”以打开 Azure Cloud Shell。 在 Cloud Shell 中,使用以下命令连接到 Azure Database for MySQL 灵活服务器。 请在命令中使用你的服务器名称、用户名和密码。

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 连接到 Azure Database for MySQL 灵活服务器时,请使用 --ssl=true 参数。 请勿使用 --ssl-mode=REQUIRED

本指导非常很重要的主要原因是,Azure Cloud Shell 预安装了来自 MariaDB 发行版的 mysql.exe 客户端。 mysql.exe 客户端需要参数 --ssl Oracle 发行版中的 MySQL 客户端需要 --ssl-mode 参数。

如果在连接到 Azure Database for MySQL 灵活服务器时看到以下错误消息,可能是在设置防火墙规则时未选择“允许从 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