Partilhar via


Integrar o Banco de Dados do Azure para MySQL com o Service Connector

Este artigo aborda métodos de autenticação suportados, clientes e código de exemplo que você pode usar para conectar seus aplicativos ao Banco de Dados do Azure para MySQL - Servidor Flexível usando o Service Connector. Neste artigo, você também encontrará nomes, valores e configurações de variáveis de ambiente padrão obtidos ao criar conexões de serviço.

Importante

O servidor único do Azure Database para MySQL está a ser descontinuado. É altamente recomendável que você atualize para o Banco de Dados do Azure para o servidor flexível MySQL. Para obter mais informações sobre como migrar para o Banco de Dados do Azure para servidor flexível MySQL, consulte O que está acontecendo com o Banco de Dados do Azure para Servidor Único MySQL?

Serviços de computação suportados

O Service Connector pode ser usado para conectar os seguintes serviços de computação ao Banco de Dados do Azure para MySQL:

  • Serviço de Aplicações do Azure
  • Azure Container Apps
  • Funções do Azure
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Tipos de autenticação e tipos de cliente suportados

A tabela abaixo mostra quais combinações de métodos de autenticação e clientes têm suporte para conectar seus serviços de computação ao Banco de Dados do Azure para MySQL usando o Service Connector. Um "Sim" indica que a combinação é suportada, enquanto um "Não" indica que ela não é suportada.

Tipo de cliente Identidade gerida atribuída pelo sistema Identidade gerida atribuída pelo utilizador Segredo/cadeia de conexão Principal de serviço
.NET Sim Sim Sim Sim
Go (go-sql-driver para uso com mysql) Sim Sim Sim Sim
Java (JDBC) Sim Sim Sim Sim
Java - Spring Boot (JDBC) Sim Sim Sim Sim
Node.js (mysql) Sim Sim Sim Sim
Python (mysql-connector-python) Sim Sim Sim Sim
Python-Django Sim Sim Sim Sim
PHP (MySQLi) Sim Sim Sim Sim
Rubi (mysql2) Sim Sim Sim Sim
Nenhuma Sim Sim Sim Sim

Nota

A identidade gerenciada atribuída pelo sistema, a identidade gerenciada atribuída pelo usuário e a autenticação da entidade de serviço só são suportadas na CLI do Azure.

Nomes de variáveis de ambiente padrão ou propriedades de aplicativo e código de exemplo

Consulte os detalhes da conexão e o código de exemplo nas tabelas a seguir, de acordo com o tipo de autenticação e o tipo de cliente da sua conexão, para conectar serviços de computação ao Banco de Dados do Azure para MySQL. Para obter mais informações sobre convenções de nomenclatura, consulte o artigo interno do Service Connector.

Identidade gerida atribuída automaticamente pelo sistema

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_MYSQL_CONNECTIONSTRING ADO.NET Cadeia de conexão MySQL Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Código de exemplo

Consulte as etapas e o código abaixo para se conectar ao Banco de Dados do Azure para MySQL usando uma identidade gerenciada atribuída ao sistema.

Para o .NET, não há um plug-in ou biblioteca para suportar conexões sem senha. Você pode obter um token de acesso para a identidade gerida ou para o principal de serviço usando uma biblioteca cliente como Azure.Identity. Em seguida, você pode usar o token de acesso como senha para se conectar ao banco de dados. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.

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

Para obter mais exemplos de código, consulte Conectar-se a bancos de dados do Azure a partir do App Service sem segredos usando uma identidade gerida.

Identidade gerida atribuída pelo utilizador

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_MYSQL_CLIENTID O seu ID de cliente <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET Cadeia de conexão MySQL Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Código de exemplo

Consulte as etapas e o código abaixo para se conectar ao Banco de Dados do Azure para MySQL usando uma identidade gerenciada atribuída pelo usuário.

Para o .NET, não há um plug-in ou biblioteca para suportar conexões sem senha. Pode obter um token de acesso para a identidade gerida ou entidade de serviço usando uma biblioteca cliente como Azure.Identity. Em seguida, você pode usar o token de acesso como senha para se conectar ao banco de dados. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.

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

Para obter mais exemplos de código, consulte Conectar-se a bases de dados do Azure a partir do App Service sem segredos usando uma identidade gerida.

Cadeia de ligação

Aviso

A Microsoft recomenda que você use o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento requer um grau muito alto de confiança no aplicativo e acarreta riscos que não estão presentes em outros fluxos. Você só deve usar esse fluxo quando outros fluxos mais seguros, como identidades gerenciadas, não forem viáveis.

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_MYSQL_CONNECTIONSTRING ADO.NET Cadeia de conexão 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

Código de exemplo

Consulte as etapas e o código abaixo para se conectar ao Banco de Dados do Azure para MySQL usando uma cadeia de conexão.

  1. Instale dependências. Siga as orientações para instalar o connector/NET MySQL
  2. No código, obtenha a cadeia de conexão MySQL a partir de variáveis de ambiente adicionadas pelo serviço Service Connector. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
    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 de serviço

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_MYSQL_CLIENTID O seu ID de cliente <client-ID>
AZURE_MYSQL_CLIENTSECRET O segredo do seu cliente <client-secret>
AZURE_MYSQL_TENANTID O seu ID de inquilino <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET Cadeia de ligação MySQL Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Código de exemplo

Consulte os passos e o código abaixo para se conectar ao Banco de Dados do Azure para MySQL utilizando um principal de serviço.

Para o .NET, não há um plug-in ou biblioteca para suportar conexões sem senha. Você pode obter um token de acesso para a identidade gerenciada ou entidade de serviço usando a biblioteca de cliente como Azure.Identity. Em seguida, você pode usar o token de acesso como senha para se conectar ao banco de dados. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.

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

Para obter mais exemplos de código, consulte Conectar-se a bases de dados do Azure a partir do App Service sem segredos usando uma identidade gerida.

Próximos passos

Siga a documentação para saber mais sobre o Service Connector.