Azure Resource Manager Mysql Dotnet

作者 microsoft354361d83247MIT收錄於 2026年10月8日更新於 2026年10月8日

Azure MySQL Flexible Server SDK for .NET. Database management for MySQL Flexible Server deployments. Use for creating servers, databases, firewall rules, configurations, backups, and high availability. Triggers: "MySQL", "MySqlFlexibleServer", "MySQL Flexible Server", "Azure Database for MySQL", "MySQL database management", "MySQL firewall", "MySQL backup".

AI 產生的概覽

指導 .NET 開發人員使用 Azure Resource Manager SDK 管理 Azure MySQL 彈性伺服器部署。

功能
此技能提供參考說明與 C# 程式碼範例,用於透過 .NET 的 Azure.ResourceManager.MySql SDK 管理 Azure Database for MySQL 彈性伺服器。內容涵蓋建立伺服器與資料庫、設定防火牆規則與伺服器參數、設定 Entra ID 管理員、備份與時間點還原、高可用性、擴縮容,以及啟動、停止與刪除作業。它也列出關鍵 SDK 類型、SKU 層級、高可用性模式、最佳做法、錯誤處理與連接字串寫法。
適用情境
適用於撰寫用來佈建或操作 Azure MySQL 彈性伺服器資源的 .NET 程式碼時,例如建立伺服器、新增資料庫、開放防火牆規則、調整參數,或從備份還原。它適合透過 Azure Resource Manager SDK 完成的基础設施管理工作,而非應用程式資料存取。
執行需求
需要 .NET SDK,以及 Azure.ResourceManager.MySql 與 Azure.Identity NuGet 套件,還需要 Azure 訂用帳戶、資源群組與認證(DefaultAzureCredential 或 ManagedIdentityCredential 等特定認證)。需使用訂用帳戶 ID、資源群組與伺服器名稱等環境變數,並需要連線至 Azure 的網路。此技能不隨附指令碼,僅為說明與程式碼範例。

Azure.ResourceManager.MySql (.NET)

Azure Resource Manager SDK for managing MySQL Flexible Server deployments.

Installation

bash
dotnet add package Azure.ResourceManager.MySqldotnet add package Azure.Identity

Current Version: v1.2.0 (GA)
API Version: 2023-12-30

Note: This skill focuses on MySQL Flexible Server. Single Server is deprecated and scheduled for retirement.

Environment Variables

bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id>  # Required: Azure subscription IDAZURE_RESOURCE_GROUP=<your-resource-group>  # Required: resource group nameAZURE_MYSQL_SERVER_NAME=<your-mysql-server>  # Required: MySQL Flexible Server nameAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production

Authentication

csharp
using Azure.Identity;using Azure.ResourceManager;using Azure.ResourceManager.MySql;using Azure.ResourceManager.MySql.FlexibleServers;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>var credential = new DefaultAzureCredential(    DefaultAzureCredential.DefaultEnvironmentVariableName);// Or use a specific credential directly in production:// See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes// var credential = new ManagedIdentityCredential();ArmClient client = new ArmClient(credential);

Resource Hierarchy

Subscription└── ResourceGroup    └── MySqlFlexibleServer                 # MySQL Flexible Server instance        ├── MySqlFlexibleServerDatabase     # Database within the server        ├── MySqlFlexibleServerFirewallRule # IP firewall rules        ├── MySqlFlexibleServerConfiguration # Server parameters        ├── MySqlFlexibleServerBackup       # Backup information        ├── MySqlFlexibleServerMaintenanceWindow # Maintenance schedule        └── MySqlFlexibleServerAadAdministrator # Entra ID admin

Core Workflows

1. Create MySQL Flexible Server

csharp
using Azure.ResourceManager.MySql.FlexibleServers;using Azure.ResourceManager.MySql.FlexibleServers.Models;
ResourceGroupResource resourceGroup = await client    .GetDefaultSubscriptionAsync()    .Result    .GetResourceGroupAsync("my-resource-group");
MySqlFlexibleServerCollection servers = resourceGroup.GetMySqlFlexibleServers();
MySqlFlexibleServerData data = new MySqlFlexibleServerData(AzureLocation.EastUS){    Sku = new MySqlFlexibleServerSku("Standard_D2ds_v4", MySqlFlexibleServerSkuTier.GeneralPurpose),    AdministratorLogin = "mysqladmin",    AdministratorLoginPassword = "YourSecurePassword123!",    Version = MySqlFlexibleServerVersion.Ver8_0_21,    Storage = new MySqlFlexibleServerStorage    {        StorageSizeInGB = 128,        AutoGrow = MySqlFlexibleServerEnableStatusEnum.Enabled,        Iops = 3000    },    Backup = new MySqlFlexibleServerBackupProperties    {        BackupRetentionDays = 7,        GeoRedundantBackup = MySqlFlexibleServerEnableStatusEnum.Disabled    },    HighAvailability = new MySqlFlexibleServerHighAvailability    {        Mode = MySqlFlexibleServerHighAvailabilityMode.ZoneRedundant,        StandbyAvailabilityZone = "2"    },    AvailabilityZone = "1"};
ArmOperation<MySqlFlexibleServerResource> operation = await servers    .CreateOrUpdateAsync(WaitUntil.Completed, "my-mysql-server", data);
MySqlFlexibleServerResource server = operation.Value;Console.WriteLine($"Server created: {server.Data.FullyQualifiedDomainName}");

2. Create Database

csharp
MySqlFlexibleServerResource server = await resourceGroup    .GetMySqlFlexibleServerAsync("my-mysql-server");
MySqlFlexibleServerDatabaseCollection databases = server.GetMySqlFlexibleServerDatabases();
MySqlFlexibleServerDatabaseData dbData = new MySqlFlexibleServerDatabaseData{    Charset = "utf8mb4",    Collation = "utf8mb4_unicode_ci"};
ArmOperation<MySqlFlexibleServerDatabaseResource> operation = await databases    .CreateOrUpdateAsync(WaitUntil.Completed, "myappdb", dbData);
MySqlFlexibleServerDatabaseResource database = operation.Value;Console.WriteLine($"Database created: {database.Data.Name}");

3. Configure Firewall Rules

csharp
MySqlFlexibleServerFirewallRuleCollection firewallRules = server.GetMySqlFlexibleServerFirewallRules();
// Allow specific IP rangeMySqlFlexibleServerFirewallRuleData ruleData = new MySqlFlexibleServerFirewallRuleData{    StartIPAddress = System.Net.IPAddress.Parse("10.0.0.1"),    EndIPAddress = System.Net.IPAddress.Parse("10.0.0.255")};
ArmOperation<MySqlFlexibleServerFirewallRuleResource> operation = await firewallRules    .CreateOrUpdateAsync(WaitUntil.Completed, "allow-internal", ruleData);
// Allow Azure servicesMySqlFlexibleServerFirewallRuleData azureServicesRule = new MySqlFlexibleServerFirewallRuleData{    StartIPAddress = System.Net.IPAddress.Parse("0.0.0.0"),    EndIPAddress = System.Net.IPAddress.Parse("0.0.0.0")};
await firewallRules.CreateOrUpdateAsync(WaitUntil.Completed, "AllowAllAzureServicesAndResourcesWithinAzureIps", azureServicesRule);

4. Update Server Configuration

csharp
MySqlFlexibleServerConfigurationCollection configurations = server.GetMySqlFlexibleServerConfigurations();
// Get current configurationMySqlFlexibleServerConfigurationResource config = await configurations    .GetAsync("max_connections");
// Update configurationMySqlFlexibleServerConfigurationData configData = new MySqlFlexibleServerConfigurationData{    Value = "500",    Source = MySqlFlexibleServerConfigurationSource.UserOverride};
ArmOperation<MySqlFlexibleServerConfigurationResource> operation = await configurations    .CreateOrUpdateAsync(WaitUntil.Completed, "max_connections", configData);
// Common configurations to tunestring[] commonParams = { "max_connections", "innodb_buffer_pool_size", "slow_query_log", "long_query_time" };

5. Configure Entra ID Administrator

csharp
MySqlFlexibleServerAadAdministratorCollection admins = server.GetMySqlFlexibleServerAadAdministrators();
MySqlFlexibleServerAadAdministratorData adminData = new MySqlFlexibleServerAadAdministratorData{    AdministratorType = MySqlFlexibleServerAdministratorType.ActiveDirectory,    Login = "[email protected]",    Sid = Guid.Parse("<entra-object-id>"),    TenantId = Guid.Parse("<tenant-id>"),    IdentityResourceId = new ResourceIdentifier("/subscriptions/.../userAssignedIdentities/mysql-identity")};
ArmOperation<MySqlFlexibleServerAadAdministratorResource> operation = await admins    .CreateOrUpdateAsync(WaitUntil.Completed, "ActiveDirectory", adminData);

6. List and Manage Servers

csharp
// List servers in resource groupawait foreach (MySqlFlexibleServerResource server in resourceGroup.GetMySqlFlexibleServers()){    Console.WriteLine($"Server: {server.Data.Name}");    Console.WriteLine($"  FQDN: {server.Data.FullyQualifiedDomainName}");    Console.WriteLine($"  Version: {server.Data.Version}");    Console.WriteLine($"  State: {server.Data.State}");    Console.WriteLine($"  SKU: {server.Data.Sku.Name} ({server.Data.Sku.Tier})");}
// List databases in serverawait foreach (MySqlFlexibleServerDatabaseResource db in server.GetMySqlFlexibleServerDatabases()){    Console.WriteLine($"Database: {db.Data.Name}");}

7. Backup and Restore

csharp
// List available backupsawait foreach (MySqlFlexibleServerBackupResource backup in server.GetMySqlFlexibleServerBackups()){    Console.WriteLine($"Backup: {backup.Data.Name}");    Console.WriteLine($"  Type: {backup.Data.BackupType}");    Console.WriteLine($"  Completed: {backup.Data.CompletedOn}");}
// Point-in-time restoreMySqlFlexibleServerData restoreData = new MySqlFlexibleServerData(AzureLocation.EastUS){    CreateMode = MySqlFlexibleServerCreateMode.PointInTimeRestore,    SourceServerResourceId = server.Id,    RestorePointInTime = DateTimeOffset.UtcNow.AddHours(-2)};
ArmOperation<MySqlFlexibleServerResource> operation = await servers    .CreateOrUpdateAsync(WaitUntil.Completed, "my-mysql-restored", restoreData);

8. Stop and Start Server

csharp
MySqlFlexibleServerResource server = await resourceGroup    .GetMySqlFlexibleServerAsync("my-mysql-server");
// Stop server (saves costs when not in use)await server.StopAsync(WaitUntil.Completed);
// Start serverawait server.StartAsync(WaitUntil.Completed);
// Restart serverawait server.RestartAsync(WaitUntil.Completed, new MySqlFlexibleServerRestartParameter{    RestartWithFailover = MySqlFlexibleServerEnableStatusEnum.Enabled,    MaxFailoverSeconds = 60});

9. Update Server (Scale)

csharp
MySqlFlexibleServerResource server = await resourceGroup    .GetMySqlFlexibleServerAsync("my-mysql-server");
MySqlFlexibleServerPatch patch = new MySqlFlexibleServerPatch{    Sku = new MySqlFlexibleServerSku("Standard_D4ds_v4", MySqlFlexibleServerSkuTier.GeneralPurpose),    Storage = new MySqlFlexibleServerStorage    {        StorageSizeInGB = 256,        Iops = 6000    }};
ArmOperation<MySqlFlexibleServerResource> operation = await server    .UpdateAsync(WaitUntil.Completed, patch);

10. Delete Server

csharp
MySqlFlexibleServerResource server = await resourceGroup    .GetMySqlFlexibleServerAsync("my-mysql-server");
await server.DeleteAsync(WaitUntil.Completed);

Key Types Reference

TypePurpose
MySqlFlexibleServerResourceFlexible Server instance
MySqlFlexibleServerDataServer configuration data
MySqlFlexibleServerCollectionCollection of servers
MySqlFlexibleServerDatabaseResourceDatabase within server
MySqlFlexibleServerFirewallRuleResourceIP firewall rule
MySqlFlexibleServerConfigurationResourceServer parameter
MySqlFlexibleServerBackupResourceBackup metadata
MySqlFlexibleServerAadAdministratorResourceEntra ID admin
MySqlFlexibleServerSkuSKU (compute tier + size)
MySqlFlexibleServerStorageStorage configuration
MySqlFlexibleServerHighAvailabilityHA configuration
MySqlFlexibleServerBackupPropertiesBackup settings

SKU Tiers

TierUse CaseSKU Examples
BurstableDev/test, light workloadsStandard_B1ms, Standard_B2s
GeneralPurposeProduction workloadsStandard_D2ds_v4, Standard_D4ds_v4
MemoryOptimizedHigh memory requirementsStandard_E2ds_v4, Standard_E4ds_v4

High Availability Modes

ModeDescription
DisabledNo HA (single server)
SameZoneHA within same availability zone
ZoneRedundantHA across availability zones

Best Practices

  1. Use Flexible Server — Single Server is deprecated
  2. Enable zone-redundant HA — For production workloads
  3. Use DefaultAzureCredential — Prefer over connection strings
  4. Configure Entra ID authentication — More secure than SQL auth
  5. Enable auto-grow storage — Prevents out-of-space issues
  6. Set appropriate backup retention — 7-35 days based on compliance
  7. Use private endpoints — For secure network access
  8. Tune server parameters — Based on workload characteristics
  9. Monitor with Azure Monitor — Enable metrics and logs
  10. Stop dev/test servers — Save costs when not in use

Error Handling

csharp
using Azure;
try{    ArmOperation<MySqlFlexibleServerResource> operation = await servers        .CreateOrUpdateAsync(WaitUntil.Completed, "my-mysql", data);}catch (RequestFailedException ex) when (ex.Status == 409){    Console.WriteLine("Server already exists");}catch (RequestFailedException ex) when (ex.Status == 400){    Console.WriteLine($"Invalid configuration: {ex.Message}");}catch (RequestFailedException ex){    Console.WriteLine($"Azure error: {ex.Status} - {ex.Message}");}

Connection String

After creating the server, connect using:

csharp
// ADO.NET connection stringstring connectionString = $"Server={server.Data.FullyQualifiedDomainName};" +    "Database=myappdb;" +    "User Id=mysqladmin;" +    "Password=YourSecurePassword123!;" +    "SslMode=Required;";
// With Entra ID token (recommended)var credential = new DefaultAzureCredential();var token = await credential.GetTokenAsync(    new TokenRequestContext(new[] { "https://ossrdbms-aad.database.windows.net/.default" }));
string connectionString = $"Server={server.Data.FullyQualifiedDomainName};" +    "Database=myappdb;" +    $"User [email protected];" +    $"Password={token.Token};" +    "SslMode=Required;";

Related SDKs

SDKPurposeInstall
Azure.ResourceManager.MySqlMySQL management (this SDK)dotnet add package Azure.ResourceManager.MySql
Azure.ResourceManager.PostgreSqlPostgreSQL managementdotnet add package Azure.ResourceManager.PostgreSql
MySqlConnectorMySQL data accessdotnet add package MySqlConnector

Reference Links

來源與署名

來源:microsoft/skills位於.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-mysql-dotnet提交354361d

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架