Aracılığıyla paylaş


MySQL için Azure Veritabanı Service Connector ile tümleştirme

Bu makale, Hizmet Bağlayıcısı kullanarak uygulamalarınızı MySQL için Azure Veritabanı - Esnek Sunucu'ya bağlamak için kullanabileceğiniz desteklenen kimlik doğrulama yöntemlerini, istemcileri ve örnek kodu kapsar. Bu makalede, hizmet bağlantıları oluştururken elde edilen varsayılan ortam değişkeni adlarını, değerlerini ve yapılandırmasını da bulacaksınız.

Önemli

MySQL için Azure Veritabanı tek sunucu emeklilik sürecindedir. Esnek MySQL için Azure Veritabanı sunucuya yükseltmenizi kesinlikle öneririz. MySQL için Azure Veritabanı esnek sunucuya geçiş hakkında daha fazla bilgi için bkz. MySQL için Azure Veritabanı Tek Sunucu'ya neler oluyor?

Desteklenen işlem hizmetleri

Hizmet Bağlayıcısı, aşağıdaki işlem hizmetlerini MySQL için Azure Veritabanı bağlamak için kullanılabilir:

  • Azure App Service
  • Azure Container Apps
  • Azure İşlevleri
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

Desteklenen kimlik doğrulama türleri ve istemci türleri

Aşağıdaki tabloda, Hizmet Bağlayıcısı'nı kullanarak işlem hizmetlerinizi MySQL için Azure Veritabanı'na bağlamak için hangi kimlik doğrulama yöntemlerinin ve istemcilerinin desteklendiği gösterilmektedir. "Evet", birleşimin desteklendiğini, "Hayır" ise bunun desteklenmediğini gösterir.

İstemci türü Sistem tarafından atanan yönetilen kimlik Kullanıcı tarafından atanan yönetilen kimlik Gizli anahtar/bağlantı dizesi Hizmet sorumlusu
.NET Yes Yes Yes Yes
Go (mysql için go-sql-sürücüsü) Yes Yes Yes Yes
Java (JDBC) Yes Yes Yes Yes
Java - Spring Boot (JDBC) Yes Yes Yes Yes
Node.js (mysql) Yes Yes Yes Yes
Python (mysql-connector-python) Yes Yes Yes Yes
Python-Django Yes Yes Yes Yes
PHP (MySQLi) Yes Yes Yes Yes
Ruby (mysql2) Yes Yes Yes Yes
Hiçbiri Yes Yes Yes Yes

Not

Sistem tarafından atanan yönetilen kimlik, kullanıcı tarafından atanan yönetilen kimlik ve hizmet sorumlusu kimlik doğrulaması yalnızca Azure CLI'da desteklenir.

Varsayılan ortam değişkeni adları veya uygulama özellikleri ve örnek kod

İşlem hizmetlerini MySQL için Azure Veritabanı bağlamak için bağlantınızın kimlik doğrulama türüne ve istemci türüne göre aşağıdaki tablolardaki bağlantı ayrıntılarına ve örnek koda başvurun. Adlandırma kuralları hakkında daha fazla bilgi için Hizmet Bağlayıcısı iç bilgileri makalesine bakın.

Sistem tarafından atanan yönetilen kimlik

Varsayılan ortam değişkeni adı Açıklama Örnek değer
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL bağlantı dizesi Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Örnek kod

Sistem tarafından atanan yönetilen kimliği kullanarak MySQL için Azure Veritabanı bağlanmak için aşağıdaki adımlara ve koda bakın.

.NET için parolasız bağlantıları destekleyen bir eklenti veya kitaplık yoktur. Azure.Identity gibi istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alabilirsiniz. Ardından veritabanına bağlanmak için parola olarak erişim belirtecini kullanabilirsiniz. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümündeki yorumu kaldırın.

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

Daha fazla kod örneği için bkz Yönetilen kimlik kullanarak gizli diziler olmadan App Service'ten Azure veritabanlarına bağlanma.

Kullanıcı tarafından atanan yönetilen kimlik

Varsayılan ortam değişkeni adı Açıklama Örnek değer
AZURE_MYSQL_CLIENTID İstemci kimliğiniz <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL bağlantı dizesi Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Örnek kod

Kullanıcı tarafından atanan yönetilen kimliği kullanarak MySQL için Azure Veritabanı bağlanmak için aşağıdaki adımlara ve koda bakın.

.NET için parolasız bağlantıları destekleyen bir eklenti veya kitaplık yoktur. Azure.Identity gibi istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alabilirsiniz. Ardından veritabanına bağlanmak için parola olarak erişim belirtecini kullanabilirsiniz. Aşağıdaki kodu kullanmadan önce, hangi kimlik doğrulama türünü kullanmak istediğinize göre kod parçacığının bölümündeki yorum işaretlerini kaldırın.

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

Daha fazla kod örneği için, Yönetilen kimlik kullanarak gizli diziler olmadan App Service'ten Azure veritabanlarına bağlanma sayfasına bakın.

Bağlantı dizesi

Uyarı

Microsoft, kullanılabilir en güvenli kimlik doğrulama akışını kullanmanızı önerir. Bu yordamda açıklanan kimlik doğrulama akışı, uygulamada çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca yönetilen kimlikler gibi diğer daha güvenli akışlar uygun olmadığında kullanmalısınız.

Varsayılan ortam değişkeni adı Açıklama Örnek değer
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL bağlantı dizesi 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

Örnek kod

bağlantı dizesi kullanarak MySQL için Azure Veritabanı bağlanmak için aşağıdaki adımlara ve koda bakın.

  1. Bağımlılıkları yükleyin. Bağlayıcıyı/NET MySQL'i yüklemek için yönergeleri izleyin
  2. Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden MySQL bağlantı dizesi alın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

Hizmet sorumlusu

Varsayılan ortam değişkeni adı Açıklama Örnek değer
AZURE_MYSQL_CLIENTID İstemci kimliğiniz <client-ID>
AZURE_MYSQL_CLIENTSECRET Müşteri gizli anahtarınız <client-secret>
AZURE_MYSQL_TENANTID Kiracı kimliğiniz <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL bağlantı dizesi Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Örnek kod

Hizmet sorumlusu kullanarak MySQL için Azure Veritabanı bağlanmak için aşağıdaki adımlara ve koda bakın.

.NET için parolasız bağlantıları destekleyen bir eklenti veya kitaplık yoktur. Azure.Identity gibi istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alabilirsiniz. Ardından veritabanına bağlanmak için parola olarak erişim belirtecini kullanabilirsiniz. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünün yorum işaretini kaldırın.

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

Daha fazla kod örneği için bkz Yönetilen kimlik kullanarak App Service'ten Azure veritabanlarına gizli anahtarlar olmadan bağlanma.

Sonraki adımlar

Service Connector hakkında daha fazla bilgi edinmek için belgeleri izleyin.