Partage via


Intégrer Azure Database pour MySQL avec Service Connector

Cette page présente les méthodes d’authentification et les clients pris en charge, et présente des exemples de code que vous pouvez utiliser pour connecter Azure Database pour MySQL – Serveur flexible à d’autres services cloud en utilisant Service Connector. Cette page présente également les noms et les valeurs des variables d’environnement par défaut (ou configuration Spring Boot) que vous obtenez lorsque vous créez des connexions de service.

Important

Le serveur unique Azure Database pour MySQL est en voie de mise hors service. Nous vous conseillons vivement de procéder à une mise à niveau vers Azure Database pour MySQL – Serveur flexible. Pour obtenir plus d’informations sur la migration vers Azure Database pour MySQL – Serveur flexible, consultez Qu’en est-il du Serveur unique Azure Database pour MySQL ?

Service de calcul pris en charge

Service Connector peut être utilisé pour connecter les services de calcul suivants à Azure Database pour MySQL :

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

Types d’authentification et de clients pris en charge

Le tableau ci-dessous montre les combinaisons méthodes d’authentification/clients prises en charge pour connecter votre service de calcul à Azure Database pour MySQL en utilisant le connecteur de services. « Oui » indique que la combinaison est prise en charge, tandis que « Non » indique qu’elle n’est pas prise en charge.

Type de client Identité managée affectée par le système Identité managée affectée par l’utilisateur Secret/chaîne de connexion Principal du service
.NET Oui Oui Oui Oui
Go (pilote go-sql-driver pour MySQL) Oui Oui Oui Oui
Java (JDBC) Oui Oui Oui Oui
Java – Spring Boot (JDBC) Oui Oui Oui Oui
Node.js (mysql) Oui Oui Oui Oui
Python (mysql-connector-python) Oui Oui Oui Oui
Python-Django Oui Oui Oui Oui
PHP (mysqli) Oui Oui Oui Oui
Ruby (mysql2) Oui Oui Oui Oui
Aucun Oui Oui Oui Oui

Ce tableau indique que toutes les combinaisons de types client et de méthodes d’authentification dans la table sont prises en charge. Tous les types client peuvent utiliser l’une quelconque des méthodes d’authentification pour se connecter à Azure Database pour MySQL en utilisant le connecteur de services.

Remarque

Identité managée affectée par le système, Identité managée affectée par l’utilisateur et Principal de service ne sont pris en charge que sur Azure CLI.

Noms des variables d’environnement par défaut ou propriétés de l’application et exemple de code

Référencez les détails de connexion et l’exemple de code dans les tableaux suivants, en fonction du type d’authentification et du type client de votre connexion, pour connecter des services de calcul à Azure Database pour MySQL. Pour plus d’informations sur les conventions d’affectation de noms, consultez l’article Services internes du connecteur de services.

Identité managée affectée par le système

Nom de variable d’environnement par défaut Description Exemple de valeur
AZURE_MYSQL_CONNECTIONSTRING Chaîne de connexion ADO.NET MySQL Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Exemple de code

Reportez-vous aux étapes et au code ci-dessous pour vous connecter à Azure Database pour MySQL en utilisant une identité managée affectée par le système.

Pour .NET, il n’existe pas de plug-in ou de bibliothèque pour prendre en charge les connexions sans mot de passe. Vous pouvez obtenir un jeton d’accès pour l’identité managée ou le principal de service à l’aide d’une bibliothèque cliente telle que Azure.Identity. Vous pouvez ensuite utiliser le jeton d’accès comme mot de passe pour vous connecter à la base de données. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.

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

Pour obtenir d’autres exemples de code, consultez la section Connexion à des bases de données Azure à partir d’App Service sans secrets à l’aide d’une identité managée.

Identité managée affectée par l’utilisateur

Nom de variable d’environnement par défaut Description Exemple de valeur
AZURE_MYSQL_CLIENTID Votre ID client <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING Chaîne de connexion ADO.NET MySQL Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Exemple de code

Reportez-vous aux étapes et au code ci-dessous pour vous connecter à Azure Database pour MySQL en utilisant une identité managée affectée par l’utilisateur(-trice).

Pour .NET, il n’existe pas de plug-in ou de bibliothèque pour prendre en charge les connexions sans mot de passe. Vous pouvez obtenir un jeton d’accès pour l’identité managée ou le principal de service à l’aide d’une bibliothèque cliente telle que Azure.Identity. Vous pouvez ensuite utiliser le jeton d’accès comme mot de passe pour vous connecter à la base de données. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.

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

Pour obtenir d’autres exemples de code, consultez la section Connexion à des bases de données Azure à partir d’App Service sans secrets à l’aide d’une identité managée.

Chaîne de connexion

Avertissement

Microsoft vous recommande d’utiliser le flux d’authentification le plus sécurisé disponible. Le flux d'authentification décrit dans cette procédure demande un degré de confiance très élevé dans l'application et comporte des risques qui ne sont pas présents dans d'autres flux. Vous ne devez utiliser ce flux que si d’autres flux plus sécurisés, tels que les identités managées, ne sont pas viables.

Nom de variable d’environnement par défaut Description Exemple de valeur
AZURE_MYSQL_CONNECTIONSTRING Chaîne de connexion ADO.NET MySQL 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

Exemple de code

Reportez-vous aux étapes et au code ci-dessous pour vous connecter à Azure Database pour MySQL en utilisant une chaîne de connexion.

  1. Installez des dépendances. Suivez les instructions pour installer connector/NET MySQL
  2. Dans le code, obtenez la chaîne de connexion MySQL depuis les variables d’environnement ajoutées par le connecteur de services. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

Principal du service

Nom de variable d’environnement par défaut Description Exemple de valeur
AZURE_MYSQL_CLIENTID Votre ID client <client-ID>
AZURE_MYSQL_CLIENTSECRET Votre clé secrète client <client-secret>
AZURE_MYSQL_TENANTID Votre ID d’abonné <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING Chaîne de connexion ADO.NET MySQL Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Exemple de code

Reportez-vous aux étapes et au code ci-dessous pour vous connecter à Azure Database pour MySQL en utilisant un principal de service.

Pour .NET, il n’existe pas de plug-in ou de bibliothèque pour prendre en charge les connexions sans mot de passe. Vous pouvez obtenir un jeton d’accès pour l’identité managée ou le principal de service à l’aide d’une bibliothèque cliente telle que Azure.Identity. Vous pouvez ensuite utiliser le jeton d’accès comme mot de passe pour vous connecter à la base de données. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.

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

Pour obtenir d’autres exemples de code, consultez la section Connexion à des bases de données Azure à partir d’App Service sans secrets à l’aide d’une identité managée.

Étapes suivantes

Suivez les documentations pour en savoir plus sur le connecteur de services.