分享方式:


使用服務連接器,整合適用於 MySQL 的 Azure 資料庫

此頁面會顯示支援的驗證方法和用戶端,並顯示範例程式碼,您可以用來將適用於 MySQL 的 Azure 資料庫 - 彈性伺服器連線到使用服務連接器的其他雲端服務。 此頁面也顯示您在建立服務連線時取得的預設環境變數名稱和值 (或 Spring Boot 設定)。

重要

適用於 MySQL 的 Azure 資料庫單一伺服器位於淘汰路徑上。 強烈建議您升級至適用於 MySQL 的 Azure 資料庫彈性伺服器。 如需移轉至適用於 MySQL 的 Azure 資料庫彈性伺服器的詳細資訊,請參閱適用於 MySQL 的 Azure 資料庫單一伺服器會發生什麼事

支援的計算服務

服務連接器可用來將下列計算服務連線至適用於 MySQL 的 Azure 資料庫:

  • Azure App Service
  • Azure 容器應用程式
  • Azure Functions
  • Azure Kubernetes Service (AKS)
  • Azure Spring Apps

支援的驗證類型和用戶端類型

下表顯示使用服務連接器將計算服務連線到適用於 MySQL 的 Azure 資料庫時,支援哪些驗證方法和用戶端組合。 「是」表示支援的組合,而「否」則表示不支援。

用戶端類型 系統指派的受控識別 使用者指派的受控識別 祕密/連接字串 服務主體
.NET Yes .是 .是 Yes
Go (go-sql-driver for mysql) Yes .是 .是 Yes
Java (JDBC) Yes .是 .是 Yes
Java - Spring Boot (JDBC) Yes .是 .是 Yes
Node.js (mysql) Yes .是 .是 Yes
Python (mysql-connector-python) Yes .是 .是 Yes
Python-Django Yes .是 .是 Yes
PHP (MySQLi) Yes .是 .是 Yes
Ruby (mysql2) Yes .是 .是 Yes
Yes .是 .是 Yes

下表指出支源表格中所有用戶端類型和驗證方法組合。 所有用戶端類型都可以使用任何驗證方法,使用服務連接器連線到適用於 MySQL 的 Azure 資料庫。

注意

系統指派的受控識別、使用者指派的受控識別和服務主體僅在 Azure CLI 中受到支援。

預設環境變數名稱或應用程式屬性和範例程式碼

根據連線的驗證類型和用戶端類型,參考下表中的連線詳細資料和範例程式碼,以便將計算服務連線到適用於 MySQL 的 Azure 資料庫。 如需命名慣例的詳細資訊,請參閱服務連接器內部一文。

系統指派的受控識別

預設環境變數名稱 描述 範例值
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;

範例指令碼

請參閱下列步驟和程式碼,以使用系統指派的受控識別來連線到適用於 MySQL 的 Azure 資料庫。

在 .NET 中,沒有支援無密碼連線的外掛程式或程式庫。 您可以使用 Azure.Identity 之類的用戶端程式庫,取得受控識別或服務主體的存取權杖。 然後,您可以使用該存取權杖作為密碼來連線到資料庫。 使用下列程式代碼時,請取消註解您想要使用的驗證類型代碼段部分。

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

如需其他程式碼範例,請參閱使用無祕密的受控識別從 App Service 連線至 Azure 資料庫

使用者指派的受控識別

預設環境變數名稱 描述 範例值
AZURE_MYSQL_CLIENTID 您的用戶端識別碼 <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;

範例指令碼

請參閱下列步驟和程式碼,以使用使用者指派的受控識別來連線到適用於 MySQL 的 Azure 資料庫。

在 .NET 中,沒有支援無密碼連線的外掛程式或程式庫。 您可以使用 Azure.Identity 之類的用戶端程式庫,取得受控識別或服務主體的存取權杖。 然後,您可以使用該存取權杖作為密碼來連線到資料庫。 使用下列程式代碼時,請取消註解您想要使用的驗證類型代碼段部分。

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

如需其他程式碼範例,請參閱使用無祕密的受控識別從 App Service 連線至 Azure 資料庫

連接字串

警告

Microsoft 建議您使用最安全的可用驗證流程。 這個程序描述的驗證流程需要在應用程式中具備極高的信任度,且伴隨著其他流程並未面臨的風險。 請僅在其他較安全的流程 (例如受控身分識別) 皆不具可行性的情況下,才使用這個流程。

預設環境變數名稱 描述 範例值
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

範例指令碼

請參閱下列步驟和程式碼,以使用連接字串來連線到適用於 MySQL 的 Azure 資料庫。

  1. 安裝相依性。 請遵循指導方針來安裝連接器/NET MySQL
  2. 在程式碼中,從服務連接器服務新增的環境變數取得 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 您的用戶端識別碼 <client-ID>
AZURE_MYSQL_CLIENTSECRET 您的用戶端密碼 <client-secret>
AZURE_MYSQL_TENANTID 您的租用戶識別碼 <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

範例指令碼

請參閱下列步驟和程式碼,以使用服務主題來連線到適用於 MySQL 的 Azure 資料庫。

在 .NET 中,沒有支援無密碼連線的外掛程式或程式庫。 您可以使用 Azure.Identity 之類的用戶端程式庫,取得受控識別或服務主體的存取權杖。 然後,您可以使用該存取權杖作為密碼來連線到資料庫。 使用下列程式代碼時,請取消註解您想要使用的驗證類型代碼段部分。

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

如需其他程式碼範例,請參閱使用無祕密的受控識別從 App Service 連線至 Azure 資料庫

下一步

請參閱文件,進一步了解服務連接器。