Aracılığıyla paylaş


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

Bu sayfada desteklenen kimlik doğrulama yöntemleri ve istemcileri gösterilir ve Hizmet Bağlayıcısı'nı kullanarak MySQL için Azure Veritabanı Esnek Sunucu'ya diğer bulut hizmetlerine bağlanmak için kullanabileceğiniz örnek kod gösterilir. Bu sayfada, hizmet bağlantısını oluştururken elde ettiğiniz varsayılan ortam değişkeni adları ve değerleri (veya Spring Boot yapılandırması) da gösterilir.

Önemli

MySQL için Azure Veritabanı tek sunucu kullanımdan kaldırma yolundadır. 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, işlem hizmetinizi Service Connector kullanarak MySQL için Azure Veritabanı 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 dizi/bağlantı dizesi Hizmet sorumlusu
.NET Yes Evet Evet Yes
Go (mysql için go-sql-driver) Yes Evet Evet Yes
Java (JDBC) Yes Evet Evet Yes
Java - Spring Boot (JDBC) Yes Evet Evet Yes
Node.js (mysql) Yes Evet Evet Yes
Python (mysql-connector-python) Yes Evet Evet Yes
Python-Django Yes Evet Evet Yes
PHP (MySQLi) Yes Evet Evet Yes
Ruby (mysql2) Yes Evet Evet Yes
Hiçbiri Yes Evet Evet Yes

Bu tablo, tablodaki tüm istemci türlerinin ve kimlik doğrulama yöntemlerinin bileşimlerinin desteklendiğini gösterir. Tüm istemci türleri, Service Connector kullanarak MySQL için Azure Veritabanı bağlanmak için herhangi bir kimlik doğrulama yöntemini kullanabilir.

Not

Sistem tarafından atanan yönetilen kimlik, Kullanıcı tarafından atanan yönetilen kimlik ve Hizmet sorumlusu 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 MySQL bağlantı dizesi ADO.NET 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ünü açıklamayı 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 MySQL bağlantı dizesi ADO.NET 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 kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı 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.

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 MySQL bağlantı dizesi ADO.NET 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 İstemci gizli anahtarınız <client-secret>
AZURE_MYSQL_TENANTID Kiracı kimliğiniz <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING MySQL bağlantı dizesi ADO.NET 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ü açıklamayı 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.

Sonraki adımlar

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