Teilen über


Integrieren von Azure Database for MySQL mit Service Connector

Auf dieser Seite werden unterstützte Authentifizierungsmethoden und Clients sowie Beispielcode gezeigt, den Sie verwenden können, um Azure Database for MySQL – Flexibler Server mit anderen Clouddiensten mithilfe des Dienstconnectors zu verbinden. Auf dieser Seite werden auch die Namen und Werte der Standardumgebungsvariablen (oder die Spring Boot-Konfiguration) angezeigt, die Sie erhalten, wenn Sie die Dienstverbindung erstellen.

Wichtig

Azure Database for MySQL Single Server wird eingestellt. Es wird dringend empfohlen, ein Upgrade auf Azure Database for MySQL Flexible Server auszuführen. Weitere Informationen zum Migrieren zu Azure Database for MySQL Flexible Server finden Sie unter Was geschieht mit Azure Database for MySQL Single Server?

Unterstützte Computedienste

Mit dem Dienstconnector können Sie die folgenden Computedienste mit Azure Database for MySQL verbinden:

  • Azure App Service
  • Azure Container Apps
  • Azure-Funktionen
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Unterstützte Authentifizierungstypen und Clienttypen

Die folgende Tabelle zeigt, welche Kombinationen von Authentifizierungsmethoden und Clients für die Verbindung Ihres Computediensts mit Azure Database for MySQL mithilfe des Dienstconnectors unterstützt werden. Ein „Ja“ gibt an, dass die Kombination unterstützt wird, während ein „Nein“ angibt, dass sie nicht unterstützt wird.

Clienttyp Systemseitig zugewiesene verwaltete Identität Benutzerseitig zugewiesene verwaltete Identität Geheimnis/Verbindungszeichenfolge Dienstprinzipal
.NET Ja Ja Ja Ja
Go (go-sql-driver for mysql) Ja Ja Ja Ja
Java (JDBC) Ja Ja Ja Ja
Java (Spring Boot) 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
Keine Ja Ja Ja Ja

In der Tabelle wird angegeben, dass alle Kombinationen von Clienttypen und Authentifizierungsmethoden in der Tabelle unterstützt werden. Alle Clienttypen können jede der Authentifizierungsmethoden verwenden, um mithilfe des Dienstconnectors eine Verbindung mit Azure Database for MySQL herzustellen.

Hinweis

Systemseitig zugewiesene verwaltete Identität, benutzerseitig zugewiesene verwaltete Identität und Dienstprinzipal werden nur in der Azure-Befehlszeilenschnittstelle unterstützt.

Namen von Standard-Umgebungsvariablen oder Anwendungseigenschaften und Beispielcode

Nutzen Sie die Verbindungsdetails und den Beispielcode in den folgenden Tabellen für den Authentifizierungstyp und den Clienttyp Ihrer Verbindung, um Computedienste mit Azure Database for MySQL zu verbinden. Weitere Informationen zu Benennungskonventionen finden Sie im Artikel Besonderheiten des Dienstconnectors.

Systemseitig zugewiesene verwaltete Identität

Standardname der Umgebungsvariablen Beschreibung Beispielswert
AZURE_MYSQL_CONNECTIONSTRING ADO.NET-MySQL-Verbindungszeichenfolge Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Beispielcode

Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Database for MySQL mithilfe einer systemseitig zugewiesenen verwalteten Identität herzustellen.

Für .NET gibt es kein Plug-In und keine Bibliothek, die kennwortlose Verbindungen unterstützen. Sie können ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal mithilfe einer Clientbibliothek wie Azure.Identity abrufen. Anschließend können Sie das Zugriffstoken als Kennwort verwenden, um eine Verbindung mit der Datenbank herzustellen. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.

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

Weitere Codebeispiele finden Sie unter Verbindungsherstellung mit Azure-Datenbanken über App Service ohne Geheimnisse mithilfe einer verwalteten Identität.

Dem Benutzer zugewiesene Managed Identity

Standardname der Umgebungsvariablen Beschreibung Beispielswert
AZURE_MYSQL_CLIENTID Ihre Client-ID <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET-MySQL-Verbindungszeichenfolge Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Beispielcode

Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Database for MySQL mithilfe einer benutzerseitig zugewiesenen verwalteten Identität herzustellen.

Für .NET gibt es kein Plug-In und keine Bibliothek, die kennwortlose Verbindungen unterstützen. Sie können ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal mithilfe einer Clientbibliothek wie Azure.Identity abrufen. Anschließend können Sie das Zugriffstoken als Kennwort verwenden, um eine Verbindung mit der Datenbank herzustellen. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.

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

Weitere Codebeispiele finden Sie unter Verbindungsherstellung mit Azure-Datenbanken über App Service ohne Geheimnisse mithilfe einer verwalteten Identität.

Verbindungszeichenfolge

Warnung

Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden. Der in diesem Verfahren beschriebene Authentifizierungsflow erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Sie sollten diesen Flow nur verwenden, wenn andere sicherere Flows (z. B. verwaltete Identitäten) nicht anwendbar sind.

Standardname der Umgebungsvariablen Beschreibung Beispielswert
AZURE_MYSQL_CONNECTIONSTRING ADO.NET-MySQL-Verbindungszeichenfolge 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

Beispielcode

Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Database for MySQL mithilfe einer Verbindungszeichenfolge herzustellen.

  1. Installieren Sie Abhängigkeiten. Befolgen Sie die Anleitungen zum Installieren von Connector/NET MySQL.
  2. Rufen Sie im Code die MySQL-Verbindungszeichenfolge aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

Dienstprinzipal

Standardname der Umgebungsvariablen Beschreibung Beispielswert
AZURE_MYSQL_CLIENTID Ihre Client-ID <client-ID>
AZURE_MYSQL_CLIENTSECRET Ihr geheimer Clientschlüssel <client-secret>
AZURE_MYSQL_TENANTID Ihre Mandanten-ID <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET-MySQL-Verbindungszeichenfolge Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Beispielcode

Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Database for MySQL mithilfe eines Dienstprinzipals herzustellen.

Für .NET gibt es kein Plug-In und keine Bibliothek, die kennwortlose Verbindungen unterstützen. Sie können ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal mithilfe einer Clientbibliothek wie Azure.Identity abrufen. Anschließend können Sie das Zugriffstoken als Kennwort verwenden, um eine Verbindung mit der Datenbank herzustellen. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.

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

Weitere Codebeispiele finden Sie unter Verbindungsherstellung mit Azure-Datenbanken über App Service ohne Geheimnisse mithilfe einer verwalteten Identität.

Nächste Schritte

Lesen Sie die Dokumentationen, um mehr über Service Connector zu erfahren.