تكامل Azure Database for MySQL مع Service Connector

تعرض هذه الصفحة أساليب المصادقة المدعومة والعملاء، وتعرض نموذج التعليمات البرمجية التي يمكنك استخدامها لتوصيل Azure Database for MySQL - Flexible Server بخدمات سحابية أخرى باستخدام Service Connector. تعرض هذه الصفحة أيضاً أسماء وقيم متغيرات البيئة الافتراضية (أو تكوين Spring Boot) التي تحصل عليها عند إنشاء اتصال الخدمة.

هام

قاعدة بيانات Azure لخادم MySQL الفردي على مسار الإيقاف. نوصي بشدة بالترقية إلى قاعدة بيانات Azure لخادم MySQL المرن. لمزيد من المعلومات حول الترحيل إلى خادم Azure Database for MySQL المرن، راجع ما الذي يحدث لقاعدة بيانات Azure لخادم MySQL الفردي؟

خدمات الحوسبة المدعومة

يمكن استخدام Service Connector لتوصيل خدمات الحوسبة التالية بقاعدة بيانات Azure ل MySQL:

  • "Azure App Service"
  • دالات Azure
  • Azure Container Apps
  • Azure Spring Apps

أنواع المصادقة المدعومة وأنواع العملاء

يوضح الجدول أدناه مجموعات أساليب المصادقة والعملاء المدعومة لتوصيل خدمة الحوسبة الخاصة بك بقاعدة بيانات Azure ل MySQL باستخدام Service Connector. يشير "نعم" إلى أن المجموعة مدعومة، بينما تشير "لا" إلى أنها غير مدعومة.

نوع العميل الهوية المُدارة التي يُعيّنها النظام الهوية المُدارة التي يعيّنها المُستخدم بيانات سرية/سلسلة الاتصال كيان الخدمة
.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 ل MySQL باستخدام Service Connector.

إشعار

يتم دعم الهوية المدارة المعينة من قبل النظام والهوية المدارة المعينة من قبل المستخدم ومدير الخدمة فقط على Azure CLI.

أسماء متغيرات البيئة الافتراضية أو خصائص التطبيق ونموذج التعليمات البرمجية

راجع تفاصيل الاتصال ونموذج التعليمات البرمجية في الجداول التالية، وفقا لنوع مصادقة الاتصال ونوع العميل، لتوصيل خدمات الحوسبة بقاعدة بيانات Azure ل MySQL. لمزيد من المعلومات حول اصطلاحات التسمية، راجع مقالة Service Connector internals .

الهوية المُدارة التي يُعيّنها النظام

اسم متغير البيئة الافتراضي ‏‏الوصف مثال للقيمة
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 ل MySQL باستخدام هوية مدارة معينة من قبل النظام.

بالنسبة ل .NET، لا يوجد مكون إضافي أو مكتبة لدعم الاتصالات بدون كلمة مرور. يمكنك الحصول على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام مكتبة العميل مثل Azure.Identity. ثم يمكنك استخدام الرمز المميز للوصول ككلمة مرور للاتصال بقاعدة البيانات. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.

using Azure.Core;
using Azure.Identity;
using MySqlConnector;

// Uncomment the following lines according to the authentication type.
// 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

لمزيد من نماذج التعليمات البرمجية، راجع الاتصال بقواعد بيانات Azure من App Service بدون أسرار باستخدام هوية مدارة.

الهوية المُدارة التي يُعيّنها المستخدم

اسم متغير البيئة الافتراضي ‏‏الوصف مثال للقيمة
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;

التعليمة البرمجية العينة

راجع الخطوات والرمز أدناه للاتصال بقاعدة بيانات Azure ل MySQL باستخدام هوية مدارة معينة من قبل المستخدم.

بالنسبة ل .NET، لا يوجد مكون إضافي أو مكتبة لدعم الاتصالات بدون كلمة مرور. يمكنك الحصول على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام مكتبة العميل مثل Azure.Identity. ثم يمكنك استخدام الرمز المميز للوصول ككلمة مرور للاتصال بقاعدة البيانات. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.

using Azure.Core;
using Azure.Identity;
using MySqlConnector;

// Uncomment the following lines according to the authentication type.
// 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

لمزيد من نماذج التعليمات البرمجية، راجع الاتصال بقواعد بيانات Azure من App Service بدون أسرار باستخدام هوية مدارة.

سلسلة الاتصال

اسم متغير البيئة الافتراضي ‏‏الوصف مثال للقيمة
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 ل MySQL باستخدام سلسلة الاتصال.

  1. تثبيت التبعيات: اتبع الإرشادات لتثبيت الموصل/NET MySQL
  2. في التعليمات البرمجية، احصل على سلسلة الاتصال MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. لإنشاء اتصال مشفر بخادم MySQL عبر SSL، راجع هذه الخطوات.
    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

التعليمة البرمجية العينة

راجع الخطوات والرمز أدناه للاتصال بقاعدة بيانات Azure ل MySQL باستخدام كيان الخدمة.

بالنسبة ل .NET، لا يوجد مكون إضافي أو مكتبة لدعم الاتصالات بدون كلمة مرور. يمكنك الحصول على رمز وصول للهوية المدارة أو كيان الخدمة باستخدام مكتبة العميل مثل Azure.Identity. ثم يمكنك استخدام الرمز المميز للوصول ككلمة مرور للاتصال بقاعدة البيانات. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.

using Azure.Core;
using Azure.Identity;
using MySqlConnector;

// Uncomment the following lines according to the authentication type.
// 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

لمزيد من نماذج التعليمات البرمجية، راجع الاتصال بقواعد بيانات Azure من App Service بدون أسرار باستخدام هوية مدارة.

الخطوات التالية

اتبع الوثائق لمعرفة المزيد حول Service Connector.