次の方法で共有


Azure Database for MySQL を Service Connector と統合する

このページでは、サポートされている認証方法とクライアントを示し、サービス コネクタを使用して Azure Database for MySQL - フレキシブル サーバーを他のクラウド サービスに接続するために使用できるサンプル コードを示します。 このページには、サービス接続を作成するときに取得する既定の環境変数の名前と値 (つまり、Spring Boot 構成) も示されています。

重要

Azure Database for MySQL シングル サーバーは廃止パスにあります。 Azure Database for MySQL フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for MySQL フレキシブル サーバーへの移行の詳細については、Azure Database for MySQL シングル サーバーの現状に関するページを参照してください

サポートされているコンピューティング サービス

サービス コネクタを使用すると、次のコンピューティング サービスを Azure Database for MySQL に接続できます。

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

サポートされている認証の種類とクライアントの種類

次の表は、サービス コネクタを使用してコンピューティング サービスを Azure Database for MySQL に接続するためにサポートされている認証方法とクライアントの組み合わせを示しています。 "はい" はその組み合わせがサポートされていることを示し、"いいえ" はサポートされていないことを示します。

クライアント タイプ システム割り当てマネージド ID ユーザー割り当てマネージド ID シークレット/接続文字列 サービス プリンシパル
.NET はい イエス イエス はい
Go (go-sql-driver for mysql) はい イエス イエス はい
Java (JDBC) はい イエス イエス はい
Java - Spring Boot (JDBC) はい イエス イエス はい
Node.js (mysql) はい イエス イエス はい
Python (mysql-connector-python) はい イエス イエス はい
Python-Django はい イエス イエス はい
PHP (MySQLi) はい イエス イエス はい
Ruby (mysql2) はい イエス イエス はい
なし 有効 イエス イエス はい

この表は、表内のクライアントの種類と認証方法のすべての組み合わせがサポートされていることを示しています。 すべてのクライアントの種類で任意の認証方法を使用し、サービス コネクタを使用して Azure Database for MySQL に接続できます。

Note

システム割り当てマネージド ID、ユーザー割り当てマネージド ID、サービス プリンシパルのみが Azure CLI でサポートされています。

既定の環境変数名またはアプリケーション プロパティとサンプル コード

接続の認証の種類とクライアントの種類に基づき、次の表の接続詳細とサンプル コードを参照し、Azure Database for MySQL にコンピューティング サービスを接続します。 名前付け規則の詳細については、Service Connector の内部の記事を参照してください。

システム割り当てマネージド ID

既定の環境変数名 説明 例値
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL 接続文字列 Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

サンプル コード

システム割り当てマネージド ID を使用して Azure Database for MySQL に接続するには、以下の手順とコードを参照してください。

.NET の場合、パスワードレス接続をサポートするためのプラグインやライブラリはありません。 Azure.Identity のようなクライアント ライブラリを使って、マネージド ID またはサービス プリンシパルのアクセス トークンを取得できます。 次に、アクセス トークンをパスワードとして使用してデータベースに接続できます。 次のコードを使用する場合は、使用する認証型のコード スニペットの一部をコメント解除します。

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

その他のコード サンプルについては、「マネージド ID を使用してシークレットなしで App Service から Azure データベースに接続する」を参照してください。

ユーザー割り当てマネージド ID

既定の環境変数名 説明 例値
AZURE_MYSQL_CLIENTID クライアント ID <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL 接続文字列 Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

サンプル コード

ユーザー割り当てマネージド ID を使用して Azure Database for MySQL に接続するには、以下の手順とコードを参照してください。

.NET の場合、パスワードレス接続をサポートするためのプラグインやライブラリはありません。 Azure.Identity のようなクライアント ライブラリを使って、マネージド ID またはサービス プリンシパルのアクセス トークンを取得できます。 次に、アクセス トークンをパスワードとして使用してデータベースに接続できます。 次のコードを使用する場合は、使用する認証型のコード スニペットの一部をコメント解除します。

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

その他のコード サンプルについては、「マネージド ID を使用してシークレットなしで App Service から Azure データベースに接続する」を参照してください。

Connection String

警告

Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で説明されている認証フローでは、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID など、より安全なフローが実行可能ではない場合にのみ使用してください。

既定の環境変数名 説明 例値
AZURE_MYSQL_CONNECTIONSTRING ADO.NET 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

サンプル コード

接続文字列を使用して Azure Database for MySQL に接続するには、以下の手順とコードを参照してください。

  1. 依存関係をインストールします。 ガイダンスに従って、コネクタ/NET MySQL をインストールします
  2. コードで、Service Connector サービスによって追加された環境変数から MySQL 接続文字列を取得します。 SSL 経由で MySQL サーバーへの暗号化された接続を確立するには、これらの手順を参照してください。
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

サービス プリンシパル

既定の環境変数名 説明 例値
AZURE_MYSQL_CLIENTID クライアント ID <client-ID>
AZURE_MYSQL_CLIENTSECRET クライアント シークレット <client-secret>
AZURE_MYSQL_TENANTID テナント ID <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING ADO.NET MySQL 接続文字列 Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

サンプル コード

サービス プリンシパルを使用して Azure Database for MySQL に接続するには、以下の手順とコードを参照してください。

.NET の場合、パスワードレス接続をサポートするためのプラグインやライブラリはありません。 Azure.Identity のようなクライアント ライブラリを使って、マネージド ID またはサービス プリンシパルのアクセス トークンを取得できます。 次に、アクセス トークンをパスワードとして使用してデータベースに接続できます。 次のコードを使用する場合は、使用する認証型のコード スニペットの一部をコメント解除します。

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

その他のコード サンプルについては、「マネージド ID を使用してシークレットなしで App Service から Azure データベースに接続する」を参照してください。

次のステップ

Service Connector の詳細については、ドキュメントに従ってください。