Bagikan melalui


Mengintegrasikan Azure Database for MySQL dengan Konektor Layanan

Halaman ini memperlihatkan metode dan klien autentikasi yang didukung, dan memperlihatkan kode sampel yang dapat Anda gunakan untuk menyambungkan Azure Database for MySQL - Server Fleksibel ke layanan cloud lain menggunakan Konektor Layanan. Halaman ini juga menunjukkan nama dan nilai variabel lingkungan default (atau konfigurasi Spring Boot) yang Anda dapatkan saat membuat koneksi layanan.

Penting

Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?

Layanan komputasi yang didukung

Konektor Layanan dapat digunakan untuk menyambungkan layanan komputasi berikut ke Azure Database for MySQL:

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

Jenis Autentikasi yang Didukung serta jenis klien

Tabel di bawah ini memperlihatkan kombinasi metode autentikasi dan klien mana yang didukung untuk menyambungkan layanan komputasi Anda ke Azure Database for MySQL menggunakan Konektor Layanan. "Ya" menunjukkan bahwa kombinasi didukung, sementara "Tidak" menunjukkan bahwa kombinasi tersebut tidak didukung.

Jenis klien Identitas terkelola yang ditetapkan sistem Identitas terkelola yang ditetapkan pengguna Rahasia/string koneksi Perwakilan layanan
.NET Ya Ya Ya Ya
Go (go-sql-driver for mysql) Ya Ya Ya Ya
Java (JDBC) Ya Ya Ya Ya
Java - Spring Boot (JDBC) Ya Ya Ya Ya
Node.js (mysql) Ya Ya Ya Ya
Python (mysql-connector-python) Ya Ya Ya Ya
Python-Django Ya Ya Ya Ya
PHP (MySQLi) Ya Ya Ya Ya
Ruby (mysql2) Ya Ya Ya Ya
Tidak Ya Ya Ya Ya

Tabel ini menunjukkan bahwa semua kombinasi jenis klien dan metode autentikasi dalam tabel didukung. Semua jenis klien dapat menggunakan salah satu metode autentikasi untuk menyambungkan ke Azure Database for MySQL menggunakan Konektor Layanan.

Catatan

Identitas terkelola yang ditetapkan sistem, Identitas terkelola yang ditetapkan pengguna, dan Perwakilan layanan hanya didukung di Azure CLI.

Nama variabel lingkungan default atau properti aplikasi dan kode sampel

Referensikan detail koneksi dan kode sampel dalam tabel berikut, sesuai dengan jenis autentikasi koneksi dan jenis klien Anda, untuk menyambungkan layanan komputasi ke Azure Database for MySQL. Untuk informasi selengkapnya tentang konvensi penamaan, periksa artikel internal Konektor Layanan.

Identitas Terkelola yang ditetapkan sistem

Nama Variabel Lingkungan Deskripsi Contoh nilai
AZURE_MYSQL_CONNECTIONSTRING String koneksi MySQL ADO.NET Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Kode Sampel

Lihat langkah-langkah dan kode di bawah ini untuk menyambungkan ke Azure Database for MySQL menggunakan identitas terkelola yang ditetapkan sistem.

Untuk .NET, tidak ada plugin atau pustaka untuk mendukung koneksi tanpa kata sandi. Anda bisa mendapatkan token akses untuk identitas terkelola atau perwakilan layanan menggunakan pustaka klien seperti Azure.Identity. Kemudian Anda dapat menggunakan token akses sebagai kata sandi untuk menyambungkan ke database. Saat menggunakan kode di bawah ini, batalkan komentar bagian cuplikan kode untuk jenis autentikasi yang ingin Anda gunakan.

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

Untuk sampel kode lainnya, lihat Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola.

Identitas Terkelola yang Ditetapkan Pengguna

Nama Variabel Lingkungan Deskripsi Contoh nilai
AZURE_MYSQL_CLIENTID ID klien Anda <identity-client-ID>
AZURE_MYSQL_CONNECTIONSTRING String koneksi MySQL ADO.NET Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required;

Kode Sampel

Lihat langkah-langkah dan kode di bawah ini untuk menyambungkan ke Azure Database for MySQL menggunakan identitas terkelola yang ditetapkan pengguna.

Untuk .NET, tidak ada plugin atau pustaka untuk mendukung koneksi tanpa kata sandi. Anda bisa mendapatkan token akses untuk identitas terkelola atau perwakilan layanan menggunakan pustaka klien seperti Azure.Identity. Kemudian Anda dapat menggunakan token akses sebagai kata sandi untuk menyambungkan ke database. Saat menggunakan kode di bawah ini, batalkan komentar bagian cuplikan kode untuk jenis autentikasi yang ingin Anda gunakan.

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

Untuk sampel kode lainnya, lihat Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola.

String Koneksi

Peringatan

Microsoft menyarankan agar Anda menggunakan alur autentikasi paling aman yang tersedia. Alur autentikasi yang dijelaskan dalam prosedur ini membutuhkan tingkat kepercayaan yang sangat tinggi pada aplikasi, dan membawa risiko yang tidak ada dalam alur lain. Anda hanya boleh menggunakan alur ini ketika alur lain yang lebih aman, seperti identitas terkelola, tidak layak.

Nama Variabel Lingkungan Deskripsi Contoh nilai
AZURE_MYSQL_CONNECTIONSTRING String koneksi MySQL 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

Kode Sampel

Lihat langkah-langkah dan kode di bawah ini untuk menyambungkan ke Azure Database for MySQL menggunakan string koneksi.

  1. Instal dependensi. Ikuti panduan untuk menginstal konektor/NET MySQL
  2. Dalam kode, dapatkan mySQL string koneksi dari variabel lingkungan yang ditambahkan oleh layanan Konektor Layanan. Untuk membuat koneksi terenkripsi ke server MySQL melalui SSL, lihat langkah-langkah ini.
    using System;
    using System.Data;
    using MySql.Data.MySqlClient;
    
    string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
    using (MySqlConnection connection = new MySqlConnection(connectionString))
    {
        connection.Open();
    }
    

Perwakilan Layanan

Nama Variabel Lingkungan Deskripsi Contoh nilai
AZURE_MYSQL_CLIENTID ID klien Anda <client-ID>
AZURE_MYSQL_CLIENTSECRET Rahasia klien Anda <client-secret>
AZURE_MYSQL_TENANTID ID penyewa Anda <tenant-ID>
AZURE_MYSQL_CONNECTIONSTRING String koneksi MySQL ADO.NET Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required

Kode Sampel

Lihat langkah-langkah dan kode di bawah ini untuk menyambungkan ke Azure Database for MySQL menggunakan perwakilan layanan.

Untuk .NET, tidak ada plugin atau pustaka untuk mendukung koneksi tanpa kata sandi. Anda bisa mendapatkan token akses untuk identitas terkelola atau perwakilan layanan menggunakan pustaka klien seperti Azure.Identity. Kemudian Anda dapat menggunakan token akses sebagai kata sandi untuk menyambungkan ke database. Saat menggunakan kode di bawah ini, batalkan komentar bagian cuplikan kode untuk jenis autentikasi yang ingin Anda gunakan.

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

Untuk sampel kode lainnya, lihat Menyambungkan ke database Azure dari App Service tanpa rahasia menggunakan identitas terkelola.

Langkah berikutnya

Ikuti dokumentasi untuk mempelajari selengkapnya tentang Konektor Layanan.