Dela via


Integrera Azure Database for MySQL med Service Connector

Den här sidan visar autentiseringsmetoder och klienter som stöds och visar exempelkod som du kan använda för att ansluta Azure Database for MySQL – flexibel server till andra molntjänster med hjälp av Service Connector. På den här sidan visas även standardnamn och värden för miljövariabler (eller Spring Boot-konfiguration) som du får när du skapar tjänstanslutningen.

Viktigt!

Azure Database for MySQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till en flexibel Azure Database for MySQL-server. Mer information om hur du migrerar till en flexibel Azure Database for MySQL-server finns i Vad händer med Azure Database for MySQL – enskild server?

Beräkningstjänster som stöds

Service Connector kan användas för att ansluta följande beräkningstjänster till Azure Database for MySQL:

  • Azure App Service
  • Azure Container Apps
  • Azure Functions
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Autentiseringstyper och klienttyper som stöds

Tabellen nedan visar vilka kombinationer av autentiseringsmetoder och klienter som stöds för att ansluta beräkningstjänsten till Azure Database for MySQL med hjälp av Service Connector. Ett "Ja" anger att kombinationen stöds, medan ett "Nej" anger att den inte stöds.

Klienttyp Systemtilldelad hanterad identitet Användartilldelad hanterad identitet Hemlighet/anslutningssträng Tjänstens huvudnamn
.NET Ja Ja Ja Ja
Go (go-sql-driver för mysql) Ja Ja Ja Ja
Java (JDBC) Ja Ja Ja Ja
Java – Spring Boot (JDBC) Ja Ja Ja Ja
Node.js (mysql) Ja Ja Ja Ja
Python (mysql-connector-python) Ja Ja Ja Ja
Python-Django Ja Ja Ja Ja
PHP (MySQLi) Ja Ja Ja Ja
Ruby (mysql2) Ja Ja Ja Ja
None Ja Ja Ja Ja

Den här tabellen anger att alla kombinationer av klienttyper och autentiseringsmetoder i tabellen stöds. Alla klienttyper kan använda någon av autentiseringsmetoderna för att ansluta till Azure Database for MySQL med hjälp av Service Connector.

Kommentar

Systemtilldelad hanterad identitet, användartilldelad hanterad identitet och tjänstens huvudnamn stöds endast i Azure CLI.

Standardnamn för miljövariabler eller programegenskaper och exempelkod

Referera till anslutningsinformationen och exempelkoden i följande tabeller, beroende på anslutningens autentiseringstyp och klienttyp, för att ansluta beräkningstjänster till Azure Database for MySQL. Mer information om namngivningskonventioner finns i artikeln interna serviceanslutningsprogram .

Systemtilldelad hanterad identitet

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL anslutningssträng Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Database for MySQL med hjälp av en systemtilldelad hanterad identitet.

För .NET finns det inget plugin-program eller bibliotek som stöder lösenordslösa anslutningar. Du kan hämta en åtkomsttoken för den hanterade identiteten eller tjänstens huvudnamn med hjälp av klientbibliotek som Azure.Identity. Sedan kan du använda åtkomsttoken som lösenord för att ansluta till databasen. När du använder koden nedan avkommentarer du delen av kodfragmentet för den autentiseringstyp som du vill använda.

using Azure.Core;
using Azure.Identity;
using MySqlConnector;

// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// var credential = new DefaultAzureCredential();

// For user-assigned managed identity.
// var credential = new DefaultAzureCredential(
//     new DefaultAzureCredentialOptions
//     {
//         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
//     });

// For service principal.
// var tenantId = Environment.GetEnvironmentVariable("AZURE_MYSQL_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTSECRET");
// var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var tokenRequestContext = new TokenRequestContext(
    new[] { "https://ossrdbms-aad.database.windows.net/.default" });
AccessToken accessToken = await credential.GetTokenAsync(tokenRequestContext);
// Open a connection to the MySQL server using the access token.
string connectionString =
    $"{Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING")};Password={accessToken.Token}";

using var connection = new MySqlConnection(connectionString);
Console.WriteLine("Opening connection using access token...");
await connection.OpenAsync();

// do something

Fler kodexempel finns i Ansluta till Azure-databaser från App Service utan hemligheter med hjälp av en hanterad identitet.

Användartilldelad hanterad identitet

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_MYSQL_CLIENTID Ditt klient-ID <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL anslutningssträng Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Database for MySQL med hjälp av en användartilldelad hanterad identitet.

För .NET finns det inget plugin-program eller bibliotek som stöder lösenordslösa anslutningar. Du kan hämta en åtkomsttoken för den hanterade identiteten eller tjänstens huvudnamn med hjälp av klientbibliotek som Azure.Identity. Sedan kan du använda åtkomsttoken som lösenord för att ansluta till databasen. När du använder koden nedan avkommentarer du delen av kodfragmentet för den autentiseringstyp som du vill använda.

using Azure.Core;
using Azure.Identity;
using MySqlConnector;

// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// var credential = new DefaultAzureCredential();

// For user-assigned managed identity.
// var credential = new DefaultAzureCredential(
//     new DefaultAzureCredentialOptions
//     {
//         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
//     });

// For service principal.
// var tenantId = Environment.GetEnvironmentVariable("AZURE_MYSQL_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTSECRET");
// var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var tokenRequestContext = new TokenRequestContext(
    new[] { "https://ossrdbms-aad.database.windows.net/.default" });
AccessToken accessToken = await credential.GetTokenAsync(tokenRequestContext);
// Open a connection to the MySQL server using the access token.
string connectionString =
    $"{Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING")};Password={accessToken.Token}";

using var connection = new MySqlConnection(connectionString);
Console.WriteLine("Opening connection using access token...");
await connection.OpenAsync();

// do something

Fler kodexempel finns i Ansluta till Azure-databaser från App Service utan hemligheter med hjälp av en hanterad identitet.

Anslutningssträng

Varning

Microsoft rekommenderar att du använder det säkraste tillgängliga autentiseringsflödet. Det autentiseringsflöde som beskrivs i den här proceduren kräver mycket stort förtroende för programmet och medför risker som inte finns i andra flöden. Du bör bara använda det här flödet när andra säkrare flöden, till exempel hanterade identiteter, inte är livskraftiga.

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL anslutningssträng Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;Password=<MySQL-DB-password>;SSL Mode=Required

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Database for MySQL med hjälp av en anslutningssträng.

  1. Installera beroenden. Följ riktlinjerna för att installera anslutningsappen/NET MySQL
  2. I kod hämtar du MySQL-anslutningssträng från miljövariabler som lagts till av Service Connector-tjänsten. Information om hur du upprättar krypterad anslutning till MySQL-servern via SSL finns i de här stegen.
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

Tjänstens huvudnamn

Standardnamn för miljövariabel beskrivning Exempelvärde
AZURE_MYSQL_CLIENTID Ditt klient-ID <client-ID>
AZURE_MYSQL_CLIENTSECRET Din klienthemlighet <client-secret>
AZURE_MYSQL_TENANTID Ditt klientorganisations-ID <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL anslutningssträng Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Exempelkod

Se stegen och koden nedan för att ansluta till Azure Database for MySQL med hjälp av tjänstens huvudnamn.

För .NET finns det inget plugin-program eller bibliotek som stöder lösenordslösa anslutningar. Du kan hämta en åtkomsttoken för den hanterade identiteten eller tjänstens huvudnamn med hjälp av klientbibliotek som Azure.Identity. Sedan kan du använda åtkomsttoken som lösenord för att ansluta till databasen. När du använder koden nedan avkommentarer du delen av kodfragmentet för den autentiseringstyp som du vill använda.

using Azure.Core;
using Azure.Identity;
using MySqlConnector;

// Uncomment the following lines corresponding to the authentication type you want to use.
// For system-assigned managed identity.
// var credential = new DefaultAzureCredential();

// For user-assigned managed identity.
// var credential = new DefaultAzureCredential(
//     new DefaultAzureCredentialOptions
//     {
//         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
//     });

// For service principal.
// var tenantId = Environment.GetEnvironmentVariable("AZURE_MYSQL_TENANTID");
// var clientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
// var clientSecret = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTSECRET");
// var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);

var tokenRequestContext = new TokenRequestContext(
    new[] { "https://ossrdbms-aad.database.windows.net/.default" });
AccessToken accessToken = await credential.GetTokenAsync(tokenRequestContext);
// Open a connection to the MySQL server using the access token.
string connectionString =
    $"{Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING")};Password={accessToken.Token}";

using var connection = new MySqlConnection(connectionString);
Console.WriteLine("Opening connection using access token...");
await connection.OpenAsync();

// do something

Fler kodexempel finns i Ansluta till Azure-databaser från App Service utan hemligheter med hjälp av en hanterad identitet.

Nästa steg

Följ dokumentationen om du vill veta mer om Service Connector.