[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-1abd013f-6632-4374-a57e-b52910f31145":3,"$fLs9f4TlBuT4F5AL0biwb484LOv2kjV9e-R9eFzL3Jrg":42},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":33},"1abd013f-6632-4374-a57e-b52910f31145","azure-resource-manager-mysql-dotnet","Azure MySQL灵活服务器SDK for .NET。MySQL灵活服务器部署的数据库管理。","cat_coding_backend","mod_coding","sickn33,coding","---\nname: azure-resource-manager-mysql-dotnet\ndescription: Azure MySQL Flexible Server SDK for .NET. Database management for MySQL Flexible Server deployments.\nrisk: unknown\nsource: community\ndate_added: '2026-02-27'\n---\n\n# Azure.ResourceManager.MySql (.NET)\n\nAzure Resource Manager SDK for managing MySQL Flexible Server deployments.\n\n## Installation\n\n```bash\ndotnet add package Azure.ResourceManager.MySql\ndotnet add package Azure.Identity\n```\n\n**Current Version**: v1.2.0 (GA)  \n**API Version**: 2023-12-30\n\n> **Note**: This skill focuses on MySQL Flexible Server. Single Server is deprecated and scheduled for retirement.\n\n## Environment Variables\n\n```bash\nAZURE_SUBSCRIPTION_ID=\u003Cyour-subscription-id>\nAZURE_RESOURCE_GROUP=\u003Cyour-resource-group>\nAZURE_MYSQL_SERVER_NAME=\u003Cyour-mysql-server>\n```\n\n## Authentication\n\n```csharp\nusing Azure.Identity;\nusing Azure.ResourceManager;\nusing Azure.ResourceManager.MySql;\nusing Azure.ResourceManager.MySql.FlexibleServers;\n\nArmClient client = new ArmClient(new DefaultAzureCredential());\n```\n\n## Resource Hierarchy\n\n```\nSubscription\n└── ResourceGroup\n    └── MySqlFlexibleServer                 # MySQL Flexible Server instance\n        ├── MySqlFlexibleServerDatabase     # Database within the server\n        ├── MySqlFlexibleServerFirewallRule # IP firewall rules\n        ├── MySqlFlexibleServerConfiguration # Server parameters\n        ├── MySqlFlexibleServerBackup       # Backup information\n        ├── MySqlFlexibleServerMaintenanceWindow # Maintenance schedule\n        └── MySqlFlexibleServerAadAdministrator # Entra ID admin\n```\n\n## Core Workflows\n\n### 1. Create MySQL Flexible Server\n\n```csharp\nusing Azure.ResourceManager.MySql.FlexibleServers;\nusing Azure.ResourceManager.MySql.FlexibleServers.Models;\n\nResourceGroupResource resourceGroup = await client\n    .GetDefaultSubscriptionAsync()\n    .Result\n    .GetResourceGroupAsync(\"my-resource-group\");\n\nMySqlFlexibleServerCollection servers = resourceGroup.GetMySqlFlexibleServers();\n\nMySqlFlexibleServerData data = new MySqlFlexibleServerData(AzureLocation.EastUS)\n{\n    Sku = new MySqlFlexibleServerSku(\"Standard_D2ds_v4\", MySqlFlexibleServerSkuTier.GeneralPurpose),\n    AdministratorLogin = \"mysqladmin\",\n    AdministratorLoginPassword = \"YourSecurePassword123!\",\n    Version = MySqlFlexibleServerVersion.Ver8_0_21,\n    Storage = new MySqlFlexibleServerStorage\n    {\n        StorageSizeInGB = 128,\n        AutoGrow = MySqlFlexibleServerEnableStatusEnum.Enabled,\n        Iops = 3000\n    },\n    Backup = new MySqlFlexibleServerBackupProperties\n    {\n        BackupRetentionDays = 7,\n        GeoRedundantBackup = MySqlFlexibleServerEnableStatusEnum.Disabled\n    },\n    HighAvailability = new MySqlFlexibleServerHighAvailability\n    {\n        Mode = MySqlFlexibleServerHighAvailabilityMode.ZoneRedundant,\n        StandbyAvailabilityZone = \"2\"\n    },\n    AvailabilityZone = \"1\"\n};\n\nArmOperation\u003CMySqlFlexibleServerResource> operation = await servers\n    .CreateOrUpdateAsync(WaitUntil.Completed, \"my-mysql-server\", data);\n\nMySqlFlexibleServerResource server = operation.Value;\nConsole.WriteLine($\"Server created: {server.Data.FullyQualifiedDomainName}\");\n```\n\n### 2. Create Database\n\n```csharp\nMySqlFlexibleServerResource server = await resourceGroup\n    .GetMySqlFlexibleServerAsync(\"my-mysql-server\");\n\nMySqlFlexibleServerDatabaseCollection databases = server.GetMySqlFlexibleServerDatabases();\n\nMySqlFlexibleServerDatabaseData dbData = new MySqlFlexibleServerDatabaseData\n{\n    Charset = \"utf8mb4\",\n    Collation = \"utf8mb4_unicode_ci\"\n};\n\nArmOperation\u003CMySqlFlexibleServerDatabaseResource> operation = await databases\n    .CreateOrUpdateAsync(WaitUntil.Completed, \"myappdb\", dbData);\n\nMySqlFlexibleServerDatabaseResource database = operation.Value;\nConsole.WriteLine($\"Database created: {database.Data.Name}\");\n```\n\n### 3. Configure Firewall Rules\n\n```csharp\nMySqlFlexibleServerFirewallRuleCollection firewallRules = server.GetMySqlFlexibleServerFirewallRules();\n\n\u002F\u002F Allow specific IP range\nMySqlFlexibleServerFirewallRuleData ruleData = new MySqlFlexibleServerFirewallRuleData\n{\n    StartIPAddress = System.Net.IPAddress.Parse(\"10.0.0.1\"),\n    EndIPAddress = System.Net.IPAddress.Parse(\"10.0.0.255\")\n};\n\nArmOperation\u003CMySqlFlexibleServerFirewallRuleResource> operation = await firewallRules\n    .CreateOrUpdateAsync(WaitUntil.Completed, \"allow-internal\", ruleData);\n\n\u002F\u002F Allow Azure services\nMySqlFlexibleServerFirewallRuleData azureServicesRule = new MySqlFlexibleServerFirewallRuleData\n{\n    StartIPAddress = System.Net.IPAddress.Parse(\"0.0.0.0\"),\n    EndIPAddress = System.Net.IPAddress.Parse(\"0.0.0.0\")\n};\n\nawait firewallRules.CreateOrUpdateAsync(WaitUntil.Completed, \"AllowAllAzureServicesAndResourcesWithinAzureIps\", azureServicesRule);\n```\n\n### 4. Update Server Configuration\n\n```csharp\nMySqlFlexibleServerConfigurationCollection configurations = server.GetMySqlFlexibleServerConfigurations();\n\n\u002F\u002F Get current configuration\nMySqlFlexibleServerConfigurationResource config = await configurations\n    .GetAsync(\"max_connections\");\n\n\u002F\u002F Update configuration\nMySqlFlexibleServerConfigurationData configData = new MySqlFlexibleServerConfigurationData\n{\n    Value = \"500\",\n    Source = MySqlFlexibleServerConfigurationSource.UserOverride\n};\n\nArmOperation\u003CMySqlFlexibleServerConfigurationResource> operation = await configurations\n    .CreateOrUpdateAsync(WaitUntil.Completed, \"max_connections\", configData);\n\n\u002F\u002F Common configurations to tune\nstring[] commonParams = { \"max_connections\", \"innodb_buffer_pool_size\", \"slow_query_log\", \"long_query_time\" };\n```\n\n### 5. Configure Entra ID Administrator\n\n```csharp\nMySqlFlexibleServerAadAdministratorCollection admins = server.GetMySqlFlexibleServerAadAdministrators();\n\nMySqlFlexibleServerAadAdministratorData adminData = new MySqlFlexibleServerAadAdministratorData\n{\n    AdministratorType = MySqlFlexibleServerAdministratorType.ActiveDirectory,\n    Login = \"aad-admin@contoso.com\",\n    Sid = Guid.Parse(\"\u003Centra-object-id>\"),\n    TenantId = Guid.Parse(\"\u003Ctenant-id>\"),\n    IdentityResourceId = new ResourceIdentifier(\"\u002Fsubscriptions\u002F...\u002FuserAssignedIdentities\u002Fmysql-identity\")\n};\n\nArmOperation\u003CMySqlFlexibleServerAadAdministratorResource> operation = await admins\n    .CreateOrUpdateAsync(WaitUntil.Completed, \"ActiveDirectory\", adminData);\n```\n\n### 6. List and Manage Servers\n\n```csharp\n\u002F\u002F List servers in resource group\nawait foreach (MySqlFlexibleServerResource server in resourceGroup.GetMySqlFlexibleServers())\n{\n    Console.WriteLine($\"Server: {server.Data.Name}\");\n    Console.WriteLine($\"  FQDN: {server.Data.FullyQualifiedDomainName}\");\n    Console.WriteLine($\"  Version: {server.Data.Version}\");\n    Console.WriteLine($\"  State: {server.Data.State}\");\n    Console.WriteLine($\"  SKU: {server.Data.Sku.Name} ({server.Data.Sku.Tier})\");\n}\n\n\u002F\u002F List databases in server\nawait foreach (MySqlFlexibleServerDatabaseResource db in server.GetMySqlFlexibleServerDatabases())\n{\n    Console.WriteLine($\"Database: {db.Data.Name}\");\n}\n```\n\n### 7. Backup and Restore\n\n```csharp\n\u002F\u002F List available backups\nawait foreach (MySqlFlexibleServerBackupResource backup in server.GetMySqlFlexibleServerBackups())\n{\n    Console.WriteLine($\"Backup: {backup.Data.Name}\");\n    Console.WriteLine($\"  Type: {backup.Data.BackupType}\");\n    Console.WriteLine($\"  Completed: {backup.Data.CompletedOn}\");\n}\n\n\u002F\u002F Point-in-time restore\nMySqlFlexibleServerData restoreData = new MySqlFlexibleServerData(AzureLocation.EastUS)\n{\n    CreateMode = MySqlFlexibleServerCreateMode.PointInTimeRestore,\n    SourceServerResourceId = server.Id,\n    RestorePointInTime = DateTimeOffset.UtcNow.AddHours(-2)\n};\n\nArmOperation\u003CMySqlFlexibleServerResource> operation = await servers\n    .CreateOrUpdateAsync(WaitUntil.Completed, \"my-mysql-restored\", restoreData);\n```\n\n### 8. Stop and Start Server\n\n```csharp\nMySqlFlexibleServerResource server = await resourceGroup\n    .GetMySqlFlexibleServerAsync(\"my-mysql-server\");\n\n\u002F\u002F Stop server (saves costs when not in use)\nawait server.StopAsync(WaitUntil.Completed);\n\n\u002F\u002F Start server\nawait server.StartAsync(WaitUntil.Completed);\n\n\u002F\u002F Restart server\nawait server.RestartAsync(WaitUntil.Completed, new MySqlFlexibleServerRestartParameter\n{\n    RestartWithFailover = MySqlFlexibleServerEnableStatusEnum.Enabled,\n    MaxFailoverSeconds = 60\n});\n```\n\n### 9. Update Server (Scale)\n\n```csharp\nMySqlFlexibleServerResource server = await resourceGroup\n    .GetMySqlFlexibleServerAsync(\"my-mysql-server\");\n\nMySqlFlexibleServerPatch patch = new MySqlFlexibleServerPatch\n{\n    Sku = new MySqlFlexibleServerSku(\"Standard_D4ds_v4\", MySqlFlexibleServerSkuTier.GeneralPurpose),\n    Storage = new MySqlFlexibleServerStorage\n    {\n        StorageSizeInGB = 256,\n        Iops = 6000\n    }\n};\n\nArmOperation\u003CMySqlFlexibleServerResource> operation = await server\n    .UpdateAsync(WaitUntil.Completed, patch);\n```\n\n### 10. Delete Server\n\n```csharp\nMySqlFlexibleServerResource server = await resourceGroup\n    .GetMySqlFlexibleServerAsync(\"my-mysql-server\");\n\nawait server.DeleteAsync(WaitUntil.Completed);\n```\n\n## Key Types Reference\n\n| Type | Purpose |\n|------|---------|\n| `MySqlFlexibleServerResource` | Flexible Server instance |\n| `MySqlFlexibleServerData` | Server configuration data |\n| `MySqlFlexibleServerCollection` | Collection of servers |\n| `MySqlFlexibleServerDatabaseResource` | Database within server |\n| `MySqlFlexibleServerFirewallRuleResource` | IP firewall rule |\n| `MySqlFlexibleServerConfigurationResource` | Server parameter |\n| `MySqlFlexibleServerBackupResource` | Backup metadata |\n| `MySqlFlexibleServerAadAdministratorResource` | Entra ID admin |\n| `MySqlFlexibleServerSku` | SKU (compute tier + size) |\n| `MySqlFlexibleServerStorage` | Storage configuration |\n| `MySqlFlexibleServerHighAvailability` | HA configuration |\n| `MySqlFlexibleServerBackupProperties` | Backup settings |\n\n## SKU Tiers\n\n| Tier | Use Case | SKU Examples |\n|------|----------|--------------|\n| `Burstable` | Dev\u002Ftest, light workloads | Standard_B1ms, Standard_B2s |\n| `GeneralPurpose` | Production workloads | Standard_D2ds_v4, Standard_D4ds_v4 |\n| `MemoryOptimized` | High memory requirements | Standard_E2ds_v4, Standard_E4ds_v4 |\n\n## High Availability Modes\n\n| Mode | Description |\n|------|-------------|\n| `Disabled` | No HA (single server) |\n| `SameZone` | HA within same availability zone |\n| `ZoneRedundant` | HA across availability zones |\n\n## Best Practices\n\n1. **Use Flexible Server** — Single Server is deprecated\n2. **Enable zone-redundant HA** — For production workloads\n3. **Use DefaultAzureCredential** — Prefer over connection strings\n4. **Configure Entra ID authentication** — More secure than SQL auth\n5. **Enable auto-grow storage** — Prevents out-of-space issues\n6. **Set appropriate backup retention** — 7-35 days based on compliance\n7. **Use private endpoints** — For secure network access\n8. **Tune server parameters** — Based on workload characteristics\n9. **Monitor with Azure Monitor** — Enable metrics and logs\n10. **Stop dev\u002Ftest servers** — Save costs when not in use\n\n## Error Handling\n\n```csharp\nusing Azure;\n\ntry\n{\n    ArmOperation\u003CMySqlFlexibleServerResource> operation = await servers\n        .CreateOrUpdateAsync(WaitUntil.Completed, \"my-mysql\", data);\n}\ncatch (RequestFailedException ex) when (ex.Status == 409)\n{\n    Console.WriteLine(\"Server already exists\");\n}\ncatch (RequestFailedException ex) when (ex.Status == 400)\n{\n    Console.WriteLine($\"Invalid configuration: {ex.Message}\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"Azure error: {ex.Status} - {ex.Message}\");\n}\n```\n\n## Connection String\n\nAfter creating the server, connect using:\n\n```csharp\n\u002F\u002F ADO.NET connection string\nstring connectionString = $\"Server={server.Data.FullyQualifiedDomainName};\" +\n    \"Database=myappdb;\" +\n    \"User Id=mysqladmin;\" +\n    \"Password=YourSecurePassword123!;\" +\n    \"SslMode=Required;\";\n\n\u002F\u002F With Entra ID token (recommended)\nvar credential = new DefaultAzureCredential();\nvar token = await credential.GetTokenAsync(\n    new TokenRequestContext(new[] { \"https:\u002F\u002Fossrdbms-aad.database.windows.net\u002F.default\" }));\n\nstring connectionString = $\"Server={server.Data.FullyQualifiedDomainName};\" +\n    \"Database=myappdb;\" +\n    $\"User Id=aad-admin@contoso.com;\" +\n    $\"Password={token.Token};\" +\n    \"SslMode=Required;\";\n```\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Azure.ResourceManager.MySql` | MySQL management (this SDK) | `dotnet add package Azure.ResourceManager.MySql` |\n| `Azure.ResourceManager.PostgreSql` | PostgreSQL management | `dotnet add package Azure.ResourceManager.PostgreSql` |\n| `MySqlConnector` | MySQL data access | `dotnet add package MySqlConnector` |\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| NuGet Package | https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FAzure.ResourceManager.MySql |\n| API Reference | https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fazure.resourcemanager.mysql |\n| Product Documentation | https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fmysql\u002Fflexible-server\u002F |\n| GitHub Source | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Ftree\u002Fmain\u002Fsdk\u002Fmysql\u002FAzure.ResourceManager.MySql |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,227,390,"2026-05-16 13:07:24",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":25,"skillCount":32,"createdAt":26},"后端开发","backend","mdi-server","API、数据库、服务端架构",296,[34],{"id":35,"skillId":4,"version":36,"fileName":37,"fileSize":38,"filePath":39,"fileHash":40,"manifest":41,"createdAt":19},"7a5827f3-9e54-49a3-a57d-842691fdd8bd","1.0.0","azure-resource-manager-mysql-dotnet.zip",4063,"uploads\u002Fskills\u002F1abd013f-6632-4374-a57e-b52910f31145\u002Fazure-resource-manager-mysql-dotnet.zip","a4ecaf4337feaf6faa562cd86701ed7b1ed6dfa349c49281c076ad0789c8a825","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":13584}]",{"code":43,"message":44,"data":45},200,"success",{"items":46,"stats":47,"page":50},[],{"averageRating":48,"totalRatings":48,"ratingCounts":49},0,[48,48,48,48,48],{"limit":51,"offset":48,"hasMore":52,"nextOffset":51,"ratedOnly":16},15,false]