Delen via


Azure Database for MySQL integreren met Service Connector

Op deze pagina ziet u ondersteunde verificatiemethoden en -clients en ziet u voorbeeldcode die u kunt gebruiken om Azure Database for MySQL - Flexible Server te verbinden met andere cloudservices met behulp van Service Connector. Op deze pagina ziet u ook de standaardnamen en waarden van omgevingsvariabelen (of Spring Boot-configuratie) die u krijgt wanneer u de serviceverbinding maakt.

Belangrijk

Azure Database for MySQL enkele server bevindt zich op het buitengebruikstellingspad. We raden u ten zeerste aan een upgrade uit te voeren naar een flexibele Azure Database for MySQL-server. Zie Wat gebeurt er met Azure Database for MySQL Enkele server voor meer informatie over migreren naar Azure Database for MySQL Flexibele server ?

Ondersteunde rekenservices

Serviceconnector kan worden gebruikt om de volgende rekenservices te verbinden met Azure Database for MySQL:

  • Azure App Service
  • Azure Functions
  • Azure Container Apps
  • Azure Spring Apps

Ondersteunde verificatietypen en clienttypen

In de onderstaande tabel ziet u welke combinaties van verificatiemethoden en clients worden ondersteund voor het verbinden van uw rekenservice met Azure Database for MySQL met behulp van Service Connector. Een 'Ja' geeft aan dat de combinatie wordt ondersteund, terwijl een 'Nee' aangeeft dat deze niet wordt ondersteund.

Client-type Door het systeem toegewezen beheerde identiteit Door de gebruiker toegewezen beheerde identiteit Geheim/verbindingsreeks Service-principal
.NET Ja Ja Ja Ja
Go (go-sql-driver voor 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
Geen Ja Ja Ja Ja

Deze tabel geeft aan dat alle combinaties van clienttypen en verificatiemethoden in de tabel worden ondersteund. Alle clienttypen kunnen elk van de verificatiemethoden gebruiken om verbinding te maken met Azure Database for MySQL met behulp van Service Connector.

Notitie

Door het systeem toegewezen beheerde identiteit, door de gebruiker toegewezen beheerde identiteit en service-principal worden alleen ondersteund in Azure CLI.

Namen van standaardomgevingsvariabelen of toepassingseigenschappen en voorbeeldcode

Verwijs naar de verbindingsgegevens en voorbeeldcode in de volgende tabellen, afhankelijk van het verificatietype en het clienttype van uw verbinding, om rekenservices te verbinden met Azure Database for MySQL. Raadpleeg het artikel Over interne serviceconnector voor meer informatie over naamconventies .

Door het systeem toegewezen beheerde identiteit

Naam van standaardomgevingsvariabele Beschrijving Voorbeeldwaarde
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL-verbindingsreeks Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Voorbeeldcode

Raadpleeg de stappen en code hieronder om verbinding te maken met Azure Database for MySQL met behulp van een door het systeem toegewezen beheerde identiteit.

Voor .NET is er geen invoegtoepassing of bibliotheek om wachtwoordloze verbindingen te ondersteunen. U kunt een toegangstoken ophalen voor de beheerde identiteit of service-principal met behulp van de clientbibliotheek, zoals Azure.Identity. Vervolgens kunt u het toegangstoken als wachtwoord gebruiken om verbinding te maken met de database. Als u de onderstaande code gebruikt, moet u het gedeelte van het codefragment verwijderen voor het verificatietype dat u wilt gebruiken.

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

// Uncomment the following lines according to the authentication type.
// 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

Zie Verbinding maken met Azure-databases vanuit App Service zonder geheimen met behulp van een beheerde identiteit voor meer codevoorbeelden.

Door de gebruiker toegewezen beheerde identiteit

Naam van standaardomgevingsvariabele Beschrijving Voorbeeldwaarde
AZURE_MYSQL_CLIENTID Uw client-id <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL-verbindingsreeks Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Voorbeeldcode

Raadpleeg de stappen en code hieronder om verbinding te maken met Azure Database for MySQL met behulp van een door de gebruiker toegewezen beheerde identiteit.

Voor .NET is er geen invoegtoepassing of bibliotheek om wachtwoordloze verbindingen te ondersteunen. U kunt een toegangstoken ophalen voor de beheerde identiteit of service-principal met behulp van de clientbibliotheek, zoals Azure.Identity. Vervolgens kunt u het toegangstoken als wachtwoord gebruiken om verbinding te maken met de database. Als u de onderstaande code gebruikt, moet u het gedeelte van het codefragment verwijderen voor het verificatietype dat u wilt gebruiken.

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

// Uncomment the following lines according to the authentication type.
// 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

Zie Verbinding maken met Azure-databases vanuit App Service zonder geheimen met behulp van een beheerde identiteit voor meer codevoorbeelden.

Verbindingsreeks

Naam van standaardomgevingsvariabele Beschrijving Voorbeeldwaarde
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL-verbindingsreeks 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

Voorbeeldcode

Raadpleeg de stappen en code hieronder om verbinding te maken met Azure Database for MySQL met behulp van een verbindingsreeks.

  1. Installeer afhankelijkheden. Volg de richtlijnen voor het installeren van connector/NET MySQL
  2. Haal in code MySQL-verbindingsreeks op uit omgevingsvariabelen die zijn toegevoegd door de Service Connector-service. Raadpleeg deze stappen om een versleutelde verbinding tot stand te brengen met mySQL-server via SSL.
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

Service-principal

Naam van standaardomgevingsvariabele Beschrijving Voorbeeldwaarde
AZURE_MYSQL_CLIENTID Uw client-id <client-ID>
AZURE_MYSQL_CLIENTSECRET Uw clientgeheim <client-secret>
AZURE_MYSQL_TENANTID Uw tenant-id <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL-verbindingsreeks Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Voorbeeldcode

Raadpleeg de stappen en code hieronder om verbinding te maken met Azure Database for MySQL met behulp van een service-principal.

Voor .NET is er geen invoegtoepassing of bibliotheek om wachtwoordloze verbindingen te ondersteunen. U kunt een toegangstoken ophalen voor de beheerde identiteit of service-principal met behulp van de clientbibliotheek, zoals Azure.Identity. Vervolgens kunt u het toegangstoken als wachtwoord gebruiken om verbinding te maken met de database. Als u de onderstaande code gebruikt, moet u het gedeelte van het codefragment verwijderen voor het verificatietype dat u wilt gebruiken.

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

// Uncomment the following lines according to the authentication type.
// 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

Zie Verbinding maken met Azure-databases vanuit App Service zonder geheimen met behulp van een beheerde identiteit voor meer codevoorbeelden.

Volgende stappen

Volg de documentatie voor meer informatie over Service Connector.