Sdílet prostřednictvím


Integrace služby Azure Database for MySQL s konektorem služby

Tento článek popisuje podporované metody ověřování, klienty a ukázkový kód, které můžete použít k připojení aplikací k flexibilnímu serveru Azure Database for MySQL pomocí konektoru služby. V tomto článku najdete také výchozí názvy proměnných prostředí, hodnoty a konfiguraci získané při vytváření připojení služeb.

Důležité

Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?

Podporované výpočetní služby

Konektor služby se dá použít k připojení následujících výpočetních služeb ke službě Azure Database for MySQL:

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

Podporované typy ověřování a typy klientů

Následující tabulka ukazuje, které kombinace metod ověřování a klientů se podporují pro připojení výpočetních služeb ke službě Azure Database for MySQL pomocí konektoru služby. "Ano" označuje, že kombinace je podporována, zatímco "Ne" označuje, že není podporována.

Typ klienta Spravovaná identita přiřazená systémem Spravovaná identita přiřazená uživatelem Tajný kód/připojovací řetězec Principál služby
.NET Ano Ano Ano Ano
Go (go-sql-driver for mysql) Ano Ano Ano Ano
Java (JDBC) Ano Ano Ano Ano
Java – Spring Boot (JDBC) Ano Ano Ano Ano
Node.js (mysql) Ano Ano Ano Ano
Python (mysql-connector-python) Ano Ano Ano Ano
Python-Django Ano Ano Ano Ano
PHP (MySQLi) Ano Ano Ano Ano
Ruby (mysql2) Ano Ano Ano Ano
Nic Ano Ano Ano Ano

Poznámka:

Spravovaná identita přiřazená systémem, spravovaná identita přiřazená uživatelem a ověřování pomocí principálu služby jsou podporovány pouze v Azure CLI.

Výchozí názvy proměnných prostředí nebo vlastnosti aplikace a ukázkový kód

Viz podrobnosti připojení a ukázkový kód v následujících tabulkách podle typu ověřování a klienta, abyste mohli připojit výpočetní služby k Azure Database for MySQL. Další informace o pojmenovávacích konvencích najdete v článku 'Service Connector internals'.

Spravovaná identita přiřazená systémem

Výchozí název proměnných prostředí Popis Příklad hodnoty
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL připojovací řetězec Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Ukázkový kód

Projděte si následující kroky a kód a připojte se ke službě Azure Database for MySQL pomocí spravované identity přiřazené systémem.

Pro .NET neexistuje modul plug-in ani knihovna, které podporují připojení bez hesla. Přístupový token pro spravovanou identitu nebo instanční objekt můžete získat pomocí klientské knihovny, jako je Azure.Identity. Přístupový token pak můžete použít jako heslo pro připojení k databázi. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.

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

Další ukázky kódu najdete v tématu Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity.

Spravovaná identita přiřazená uživatelem

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_MYSQL_CLIENTID ID klienta <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL připojovací řetězec Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Ukázkový kód

Pokud se chcete připojit ke službě Azure Database for MySQL pomocí spravované identity přiřazené uživatelem, projděte si následující postup a kód.

Pro .NET neexistuje modul plug-in ani knihovna, které podporují připojení bez hesla. Přístupový token pro spravovanou identitu nebo instanční objekt můžete získat pomocí klientské knihovny, jako je Azure.Identity. Přístupový token pak můžete použít jako heslo pro připojení k databázi. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.

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

Další ukázky kódu najdete v tématu Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity.

Připojovací řetězec

Varování

Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Ověřovací tok popsaný v tomto postupu vyžaduje velmi vysoký stupeň důvěryhodnosti v aplikaci a nese rizika, která nejsou přítomna v jiných tocích. Tento tok byste měli použít jenom v případě, že jiné bezpečnější toky, jako jsou spravované identity, nejsou přijatelné.

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL připojovací řetězec 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

Ukázkový kód

Pro informace o tom, jak se připojit ke službě Azure Database for MySQL pomocí připojovacího řetězce, se podívejte na následující kroky a kód.

  1. Nainstalujte závislosti. Postupujte podle pokynů k instalaci konektoru nebo NET MySQL.
  2. V kódu získejte připojovací řetězec MySQL z proměnných prostředí přidaných službou Service Connector. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

aplikační objekt služby

Výchozí název proměnné prostředí Popis Příklad hodnoty
AZURE_MYSQL_CLIENTID ID klienta <client-ID>
AZURE_MYSQL_CLIENTSECRET Tajná informace klienta <client-secret>
AZURE_MYSQL_TENANTID ID vašeho tenanta <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL připojovací řetězec Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Ukázkový kód

Informace o připojení ke službě Azure Database for MySQL pomocí instančního objektu najdete v následujících krocích a kódu.

Pro .NET neexistuje modul plug-in ani knihovna, které podporují připojení bez hesla. Přístupový token pro spravovanou identitu nebo instanční objekt můžete získat pomocí klientské knihovny, jako je Azure.Identity. Přístupový token pak můžete použít jako heslo pro připojení k databázi. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.

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

Další ukázky kódu najdete v tématu Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity.

Další kroky

Další informace o konektoru Service Connector najdete v dokumentaci.