تعرض هذه الصفحة أساليب المصادقة المدعومة والعملاء، وتعرض نموذج التعليمات البرمجية التي يمكنك استخدامها لتوصيل Azure Database for MySQL - Flexible Server بخدمات سحابية أخرى باستخدام Service Connector. تعرض هذه الصفحة أيضاً أسماء وقيم متغيرات البيئة الافتراضية (أو تكوين Spring Boot) التي تحصل عليها عند إنشاء اتصال الخدمة.
خدمات الحوسبة المدعومة
يمكن استخدام Service Connector لتوصيل خدمات الحوسبة التالية بقاعدة بيانات Azure ل MySQL:
- "Azure App Service"
- Azure Container Apps
- دالات Azure
- خدمة Azure Kubernetes (AKS)
- 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_CONNECTIONSTRING |
سلسلة اتصال JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| خصائص التطبيق |
الوصف |
مثال للقيمة |
spring.datasource.azure.passwordless-enabled |
تمكين المصادقة بدون كلمة مرور |
true |
spring.datasource.url |
عنوان URL لقاعدة بيانات Spring Boot JDBC |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_NAME |
اسم قاعدة البيانات |
MySQL-DB-name |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_NAME |
اسم قاعدة البيانات |
MySQL-DB-name |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_CONNECTIONSTRING |
سلسلة اتصال Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<database-name> |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_SSL |
خيار SSL |
true |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_DBNAME |
اسم قاعدة البيانات |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_FLAG |
SSL أو علامات أخرى |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
خيار SSL |
required |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<database-name> |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_SSL |
خيار SSL |
true |
التعليمة البرمجية العينة
راجع الخطوات والرمز أدناه للاتصال بقاعدة بيانات Azure ل MySQL باستخدام هوية مدارة معينة من قبل النظام.
بالنسبة ل .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
أضف التبعيات التالية في ملف pom.xml :
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.2.0</version>
</dependency>
احصل على سلسلة الاتصال من متغير البيئة، وأضف اسم المكون الإضافي للاتصال بقاعدة البيانات:
String url = System.getenv("AZURE_MYSQL_CONNECTIONSTRING");
String pluginName = "com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin";
Properties properties = new Properties();
properties.put("defaultAuthenticationPlugin", pluginName);
properties.put("authenticationPlugins", pluginName);
// Uncomment the following lines corresponding to the authentication type you want to use.
// for user-assigned managed identity
// String clientId = System.getenv('AZURE_MYSQL_CLIENTID')
// properties.put("azure.clientId", clientId);
// For service principal
// String tenantId = System.getenv('AZURE_MYSQL_TENANTID')
// String clientId = System.getenv('AZURE_MYSQL_CLIENTID')
// String clientSecret = System.getenv('AZURE_MYSQL_CLIENTSECRET')
// properties.put("azure.clientId", clientId);
// properties.put("azure.clientSecret", clientSecret);
// properties.put("azure.tenantId", tenantId);
Connection connection = DriverManager.getConnection(url, properties);
لمزيد من المعلومات، راجع استخدام Java وJDBC مع Azure Database for MySQL - Flexible Server.
تثبيت التبعيات
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
المصادقة باستخدام رمز الوصول المميز الحصول على عبر azure-identity المكتبة والحصول على معلومات الاتصال من متغير البيئة المضافة بواسطة Service Connector. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
import mysql.connector
import os
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity.
# cred = ManagedIdentityCredential()
# For user-assigned managed identity.
# managed_identity_client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal
# tenant_id = os.getenv('AZURE_MYSQL_TENANTID')
# client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# client_secret = os.getenv('AZURE_MYSQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# acquire token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# open connect to Azure MySQL with the access token.
host = os.getenv('AZURE_MYSQL_HOST')
database = os.getenv('AZURE_MYSQL_NAME')
user = os.getenv('AZURE_MYSQL_USER')
password = accessToken.token
cnx = mysql.connector.connect(user=user,
password=password,
host=host,
database=database)
cnx.close()
تثبيت التبعيات:
pip install azure-identity
احصل على الرمز المميز للوصول عبر azure-identity المكتبة مع متغيرات البيئة المضافة بواسطة Service Connector. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
import os
# Uncomment the following lines corresponding to the authentication type you want to use.
# system-assigned managed identity
# cred = ManagedIdentityCredential()
# user-assigned managed identity
# managed_identity_client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# service principal
# tenant_id = os.getenv('AZURE_MYSQL_TENANTID')
# client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# client_secret = os.getenv('AZURE_MYSQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# acquire token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
في إعداد الملف، احصل على معلومات قاعدة بيانات Azure MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. استخدم accessToken المكتسبة في الخطوة السابقة للوصول إلى قاعدة البيانات.
# in your setting file, eg. settings.py
host = os.getenv('AZURE_MYSQL_HOST')
database = os.getenv('AZURE_MYSQL_NAME')
user = os.getenv('AZURE_MYSQL_USER')
password = accessToken.token # this is accessToken acquired from above step.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': host
}
}
تثبيت التبعيات:
go get "github.com/go-sql-driver/mysql"
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
go get "github.com/Azure/azure-sdk-for-go/sdk/azcore"
في التعليمات البرمجية، احصل على الرمز المميز للوصول عبر azidentity، ثم اتصل ب Azure MySQL باستخدام الرمز المميز. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import (
"context"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/go-sql-driver/mysql"
)
func main() {
// Uncomment the following lines corresponding to the authentication type you want to use.
// for system-assigned managed identity
// cred, err := azidentity.NewDefaultAzureCredential(nil)
// for user-assigned managed identity
// clientid := os.Getenv("AZURE_MYSQL_CLIENTID")
// azidentity.ManagedIdentityCredentialOptions.ID := clientid
// options := &azidentity.ManagedIdentityCredentialOptions{ID: clientid}
// cred, err := azidentity.NewManagedIdentityCredential(options)
// for service principal
// clientid := os.Getenv("AZURE_MYSQL_CLIENTID")
// tenantid := os.Getenv("AZURE_MYSQL_TENANTID")
// clientsecret := os.Getenv("AZURE_MYSQL_CLIENTSECRET")
// cred, err := azidentity.NewClientSecretCredential(tenantid, clientid, clientsecret, &azidentity.ClientSecretCredentialOptions{})
if err != nil {
}
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
token, err := cred.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string("https://ossrdbms-aad.database.windows.net/.default"),
})
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING") + ";Password=" + token.Token
db, err := sql.Open("mysql", connectionString)
}
تثبيت التبعيات
npm install --save @azure/identity
npm install --save mysql2
احصل على الرمز المميز للوصول باستخدام @azure/identity ومعلومات قاعدة بيانات Azure MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
const mysql = require('mysql2');
// Uncomment the following lines corresponding to the authentication type you want to use.
// for system-assigned managed identity
// const credential = new DefaultAzureCredential();
// for user-assigned managed identity
// const clientId = process.env.AZURE_MYSQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// for service principal
// const tenantId = process.env.AZURE_MYSQL_TENANTID;
// const clientId = process.env.AZURE_MYSQL_CLIENTID;
// const clientSecret = process.env.AZURE_MYSQL_CLIENTSECRET;
// const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
// acquire token
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
const connection = mysql.createConnection({
host: process.env.AZURE_MYSQL_HOST,
user: process.env.AZURE_MYSQL_USER,
password: accessToken.token,
database: process.env.AZURE_MYSQL_DATABASE,
port: process.env.AZURE_MYSQL_PORT,
ssl: process.env.AZURE_MYSQL_SSL
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL database: ' + err.stack);
return;
}
console.log('Connected to MySQL database');
});
لمزيد من نماذج التعليمات البرمجية، راجع الاتصال بقواعد بيانات 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_CLIENTID |
معرف العميل الخاص بك |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
سلسلة اتصال JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| خصائص التطبيق |
الوصف |
مثال للقيمة |
spring.datasource.azure.passwordless-enabled |
تمكين المصادقة بدون كلمة مرور |
true |
spring.cloud.azure.credential.client-id |
معرف العميل الخاص بك |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
تمكين الهوية المدارة للعميل |
true |
spring.datasource.url |
عنوان URL لقاعدة البيانات |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
اسم مستخدم قاعدة البيانات |
username |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_NAME |
اسم قاعدة البيانات |
MySQL-DB-name |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
identity-client-ID |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_NAME |
اسم قاعدة البيانات |
MySQL-DB-name |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<identity-client-ID> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
سلسلة اتصال Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<database-name> |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_SSL |
خيار SSL |
true |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<identity-client-ID> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_DBNAME |
اسم قاعدة البيانات |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_FLAG |
SSL أو علامات أخرى |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<identity-client-ID> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
خيار SSL |
required |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<identity-client-ID> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<database-name> |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_SSL |
خيار SSL |
true |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<identity-client-ID> |
التعليمة البرمجية العينة
راجع الخطوات والرمز أدناه للاتصال بقاعدة بيانات Azure ل MySQL باستخدام هوية مدارة معينة من قبل المستخدم.
بالنسبة ل .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
أضف التبعيات التالية في ملف pom.xml :
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.2.0</version>
</dependency>
احصل على سلسلة الاتصال من متغير البيئة، وأضف اسم المكون الإضافي للاتصال بقاعدة البيانات:
String url = System.getenv("AZURE_MYSQL_CONNECTIONSTRING");
String pluginName = "com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin";
Properties properties = new Properties();
properties.put("defaultAuthenticationPlugin", pluginName);
properties.put("authenticationPlugins", pluginName);
// Uncomment the following lines corresponding to the authentication type you want to use.
// for user-assigned managed identity
// String clientId = System.getenv('AZURE_MYSQL_CLIENTID')
// properties.put("azure.clientId", clientId);
// For service principal
// String tenantId = System.getenv('AZURE_MYSQL_TENANTID')
// String clientId = System.getenv('AZURE_MYSQL_CLIENTID')
// String clientSecret = System.getenv('AZURE_MYSQL_CLIENTSECRET')
// properties.put("azure.clientId", clientId);
// properties.put("azure.clientSecret", clientSecret);
// properties.put("azure.tenantId", tenantId);
Connection connection = DriverManager.getConnection(url, properties);
لمزيد من المعلومات، راجع استخدام Java وJDBC مع Azure Database for MySQL - Flexible Server.
تثبيت التبعيات
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
المصادقة باستخدام رمز الوصول المميز الحصول على عبر azure-identity المكتبة والحصول على معلومات الاتصال من متغير البيئة المضافة بواسطة Service Connector. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
import mysql.connector
import os
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity.
# cred = ManagedIdentityCredential()
# For user-assigned managed identity.
# managed_identity_client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal
# tenant_id = os.getenv('AZURE_MYSQL_TENANTID')
# client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# client_secret = os.getenv('AZURE_MYSQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# acquire token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# open connect to Azure MySQL with the access token.
host = os.getenv('AZURE_MYSQL_HOST')
database = os.getenv('AZURE_MYSQL_NAME')
user = os.getenv('AZURE_MYSQL_USER')
password = accessToken.token
cnx = mysql.connector.connect(user=user,
password=password,
host=host,
database=database)
cnx.close()
تثبيت التبعيات:
pip install azure-identity
احصل على الرمز المميز للوصول عبر azure-identity المكتبة مع متغيرات البيئة المضافة بواسطة Service Connector. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
import os
# Uncomment the following lines corresponding to the authentication type you want to use.
# system-assigned managed identity
# cred = ManagedIdentityCredential()
# user-assigned managed identity
# managed_identity_client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# service principal
# tenant_id = os.getenv('AZURE_MYSQL_TENANTID')
# client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# client_secret = os.getenv('AZURE_MYSQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# acquire token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
في إعداد الملف، احصل على معلومات قاعدة بيانات Azure MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. استخدم accessToken المكتسبة في الخطوة السابقة للوصول إلى قاعدة البيانات.
# in your setting file, eg. settings.py
host = os.getenv('AZURE_MYSQL_HOST')
database = os.getenv('AZURE_MYSQL_NAME')
user = os.getenv('AZURE_MYSQL_USER')
password = accessToken.token # this is accessToken acquired from above step.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': host
}
}
تثبيت التبعيات:
go get "github.com/go-sql-driver/mysql"
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
go get "github.com/Azure/azure-sdk-for-go/sdk/azcore"
في التعليمات البرمجية، احصل على الرمز المميز للوصول عبر azidentity، ثم اتصل ب Azure MySQL باستخدام الرمز المميز. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import (
"context"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/go-sql-driver/mysql"
)
func main() {
// Uncomment the following lines corresponding to the authentication type you want to use.
// for system-assigned managed identity
// cred, err := azidentity.NewDefaultAzureCredential(nil)
// for user-assigned managed identity
// clientid := os.Getenv("AZURE_MYSQL_CLIENTID")
// azidentity.ManagedIdentityCredentialOptions.ID := clientid
// options := &azidentity.ManagedIdentityCredentialOptions{ID: clientid}
// cred, err := azidentity.NewManagedIdentityCredential(options)
// for service principal
// clientid := os.Getenv("AZURE_MYSQL_CLIENTID")
// tenantid := os.Getenv("AZURE_MYSQL_TENANTID")
// clientsecret := os.Getenv("AZURE_MYSQL_CLIENTSECRET")
// cred, err := azidentity.NewClientSecretCredential(tenantid, clientid, clientsecret, &azidentity.ClientSecretCredentialOptions{})
if err != nil {
}
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
token, err := cred.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string("https://ossrdbms-aad.database.windows.net/.default"),
})
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING") + ";Password=" + token.Token
db, err := sql.Open("mysql", connectionString)
}
تثبيت التبعيات
npm install --save @azure/identity
npm install --save mysql2
احصل على الرمز المميز للوصول باستخدام @azure/identity ومعلومات قاعدة بيانات Azure MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
const mysql = require('mysql2');
// Uncomment the following lines corresponding to the authentication type you want to use.
// for system-assigned managed identity
// const credential = new DefaultAzureCredential();
// for user-assigned managed identity
// const clientId = process.env.AZURE_MYSQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// for service principal
// const tenantId = process.env.AZURE_MYSQL_TENANTID;
// const clientId = process.env.AZURE_MYSQL_CLIENTID;
// const clientSecret = process.env.AZURE_MYSQL_CLIENTSECRET;
// const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
// acquire token
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
const connection = mysql.createConnection({
host: process.env.AZURE_MYSQL_HOST,
user: process.env.AZURE_MYSQL_USER,
password: accessToken.token,
database: process.env.AZURE_MYSQL_DATABASE,
port: process.env.AZURE_MYSQL_PORT,
ssl: process.env.AZURE_MYSQL_SSL
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL database: ' + err.stack);
return;
}
console.log('Connected to MySQL database');
});
لمزيد من نماذج التعليمات البرمجية، راجع الاتصال بقواعد بيانات Azure من App Service بدون أسرار باستخدام هوية مدارة.
سلسلة الاتصال
تحذير
توصي 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 |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_CONNECTIONSTRING |
سلسلة اتصال JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username>&password=<Uri.EscapeDataString(<MySQL-DB-password>) |
| خصائص التطبيق |
الوصف |
مثال للقيمة |
spring.datasource.url |
عنوان URL لقاعدة بيانات Spring Boot JDBC |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username> |
spring.datasource.password |
كلمة مرور قاعدة البيانات |
MySQL-DB-password |
بعد إنشاء springboot اتصال نوع العميل، ستضيف خدمة Service Connector تلقائيا خصائص spring.datasource.url، ، ، spring.datasource.usernamespring.datasource.password. لذلك يمكن لتطبيق Spring boot إضافة الفاصوليا تلقائيا.
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_NAME |
اسم قاعدة البيانات |
MySQL-DB-name |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
كلمة مرور قاعدة البيانات |
MySQL-DB-password |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_NAME |
اسم قاعدة البيانات |
MySQL-DB-name |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
كلمة مرور قاعدة البيانات |
MySQL-DB-password |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_CONNECTIONSTRING |
سلسلة اتصال Go-sql-driver |
<MySQL-DB-username>:<MySQL-DB-password>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
كلمة مرور قاعدة البيانات |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<database-name> |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_SSL |
خيار SSL |
true |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_DBNAME |
اسم قاعدة البيانات |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_FLAG |
SSL أو علامات أخرى |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username> |
AZURE_MYSQL_PASSWORD |
كلمة مرور قاعدة البيانات |
<MySQL-DB-password> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
كلمة مرور قاعدة البيانات |
<MySQL-DB-password> |
AZURE_MYSQL_SSLMODE |
خيار SSL |
required |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
كلمة مرور قاعدة البيانات |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<database-name> |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_SSL |
خيار SSL |
true |
التعليمة البرمجية العينة
راجع الخطوات والرمز أدناه للاتصال بقاعدة بيانات Azure ل MySQL باستخدام سلسلة الاتصال.
- تثبيت التبعيات: اتبع الإرشادات لتثبيت الموصل/NET MySQL
- في التعليمات البرمجية، احصل على سلسلة الاتصال 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();
}
- تثبيت التبعيات: اتبع الإرشادات لتثبيت Connector/J.
- في التعليمات البرمجية، احصل على سلسلة الاتصال MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. لإنشاء اتصال مشفر بخادم MySQL عبر SSL، راجع هذه الخطوات.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
String connectionString = System.getenv("AZURE_MYSQL_CONNECTIONSTRING");
try (Connection connection = DriverManager.getConnection(connectionString)) {
System.out.println("Connection successful!");
} catch (SQLException e) {
e.printStackTrace();
}
- تثبيت التبعيات: أضف التبعيات التالية إلى ملفك
pom.xml .
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.20.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
- إعداد تطبيق Spring App العادي، والمزيد من التفاصيل في هذا القسم. لإنشاء اتصال مشفر بخادم MySQL عبر SSL، راجع هذه الخطوات.
- تثبيت التبعيات: اتبع الإرشادات لتثبيت Connector/Python.
- في التعليمات البرمجية، احصل على معلومات اتصال MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. لإنشاء اتصال مشفر بخادم MySQL عبر SSL، راجع هذه الخطوات.
import os
import mysql.connector
host = os.getenv('AZURE_MYSQL_HOST')
user = os.getenv('AZURE_MYSQL_USER')
password = os.getenv('AZURE_MYSQL_PASSWORD')
database = os.getenv('Azure_MYSQL_NAME')
cnx = mysql.connector.connect(user=user, password=password,
host=host,
database=database)
cnx.close()
- تثبيت التبعيات:
pip install django
- في إعداد الملف، احصل على معلومات قاعدة بيانات MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. لإنشاء اتصال مشفر بخادم MySQL عبر SSL، راجع هذه الخطوات.
# in your setting file, eg. settings.py
host = os.getenv('AZURE_MYSQL_HOST')
user = os.getenv('AZURE_MYSQL_USER')
password = os.getenv('AZURE_MYSQL_PASSWORD')
database = os.getenv('AZURE_MYSQL_NAME')
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': host
}
}
- تثبيت التبعيات:
go get -u github.com/go-sql-driver/mysql
- في التعليمات البرمجية، احصل على سلسلة الاتصال MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. لإنشاء اتصال مشفر بخادم MySQL عبر SSL، راجع هذه الخطوات.
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
)
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING")
db, err := sql.Open("mysql", connectionString)
- تثبيت التبعيات:
npm install mysql2
- في التعليمات البرمجية، احصل على معلومات اتصال MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. لإنشاء اتصال مشفر بخادم MySQL عبر SSL، راجع هذه الخطوات.
const mysql = require('mysql2')
const connection = mysql.createConnection({
host: process.env.AZURE_MYSQL_HOST,
user: process.env.AZURE_MYSQL_USER,
password: process.env.AZURE_MYSQL_PASSWORD,
database: process.env.AZURE_MYSQL_DATABASE,
port: Number(process.env.AZURE_MYSQL_PORT) ,
// ssl: process.env.AZURE_MYSQL_SSL
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL database: ' + err.stack);
return;
}
console.log('Connected to MySQL database.');
});
- تثبيت التبعيات: اتبع الدليل لتثبيت MySQLi.
- في التعليمات البرمجية، احصل على معلومات اتصال MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. لإنشاء اتصال مشفر بخادم MySQL عبر SSL، راجع هذه الخطوات.
<?php
$host = getenv('AZURE_MYSQL_HOST');
$username = getenv('AZURE_MYSQL_USER');
$password = getenv('AZURE_MYSQL_PASSWORD');
$database = getenv('Azure_MYSQL_DBNAME');
$port = int(getenv('AZURE_MYSQL_PORT'));
# $flag = getenv('AZURE_MYSQL_FLAG');
$conn = mysqli_init();
# mysqli_ssl_set($conn,NULL,NULL,NULL,NULL,NULL);
mysqli_real_connect($conn, $host, $username, $password, $database, $port, NULL);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: ' . mysqli_connect_error());
}
echo 'Connected successfully to MySQL database!';
mysqli_close($conn);
?>
- تثبيت التبعيات:
gem install mysql2
- في التعليمات البرمجية، احصل على معلومات اتصال MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. لإنشاء اتصال مشفر بخادم MySQL عبر SSL، راجع هذه الخطوات.
require 'mysql2'
require 'dotenv/load'
client = Mysql2::Client.new(
host: ENV['AZURE_MYSQL_HOST'],
username: ENV['AZURE_MYSQL_USERNAME'],
password: ENV['AZURE_MYSQL_PASSWORD'],
database: ENV['AZURE_MYSQL_DATABASE'],
# sslca: ca_path
)
client.close
كيان الخدمة
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
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_CLIENTID |
معرف العميل الخاص بك |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
سر العميل الخاص بك |
<client-secret> |
AZURE_MYSQL_TENANTID |
معرف المستأجر |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
سلسلة اتصال JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| خصائص التطبيق |
الوصف |
مثال للقيمة |
spring.datasource.azure.passwordless-enabled |
تمكين المصادقة بدون كلمة مرور |
true |
spring.cloud.azure.credential.client-id |
معرف العميل الخاص بك |
<client-ID> |
spring.cloud.azure.credential.client-secret |
سر العميل الخاص بك |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
معرف المستأجر |
<tenant-ID> |
spring.datasource.url |
عنوان URL لقاعدة البيانات |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
اسم مستخدم قاعدة البيانات |
username |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_NAME |
اسم قاعدة البيانات |
MySQL-DB-name |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
سر العميل الخاص بك |
<client-secret> |
AZURE_MYSQL_TENANTID |
معرف المستأجر |
<tenant-ID> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_NAME |
اسم قاعدة البيانات |
MySQL-DB-name |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
سر العميل الخاص بك |
<client-secret> |
AZURE_MYSQL_TENANTID |
معرف المستأجر |
<tenant-ID> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
سر العميل الخاص بك |
<client-secret> |
AZURE_MYSQL_TENANTID |
معرف المستأجر |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
سلسلة اتصال Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
اسم مستخدم قاعدة البيانات |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<database-name> |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_SSL |
خيار SSL |
true |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
سر العميل الخاص بك |
<client-secret> |
AZURE_MYSQL_TENANTID |
معرف المستأجر |
<tenant-ID> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_DBNAME |
اسم قاعدة البيانات |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_FLAG |
SSL أو علامات أخرى |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
سر العميل الخاص بك |
<client-secret> |
AZURE_MYSQL_TENANTID |
معرف المستأجر |
<tenant-ID> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
خيار SSL |
required |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
سر العميل الخاص بك |
<client-secret> |
AZURE_MYSQL_TENANTID |
معرف المستأجر |
<tenant-ID> |
| اسم متغير البيئة الافتراضي |
الوصف |
مثال للقيمة |
AZURE_MYSQL_HOST |
عنوان URL لمضيف قاعدة البيانات |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
اسم مستخدم قاعدة البيانات |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
اسم قاعدة البيانات |
<database-name> |
AZURE_MYSQL_PORT |
رقم المنفذ |
3306 |
AZURE_MYSQL_SSL |
خيار SSL |
true |
AZURE_MYSQL_CLIENTID |
معرف العميل الخاص بك |
<identity-client-ID> |
AZURE_MYSQL_CLIENTSECRET |
سر العميل الخاص بك |
<client-secret> |
AZURE_MYSQL_TENANTID |
معرف المستأجر |
<tenant-ID> |
التعليمة البرمجية العينة
راجع الخطوات والرمز أدناه للاتصال بقاعدة بيانات Azure ل MySQL باستخدام كيان الخدمة.
بالنسبة ل .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
أضف التبعيات التالية في ملف pom.xml :
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.2.0</version>
</dependency>
احصل على سلسلة الاتصال من متغير البيئة، وأضف اسم المكون الإضافي للاتصال بقاعدة البيانات:
String url = System.getenv("AZURE_MYSQL_CONNECTIONSTRING");
String pluginName = "com.azure.identity.extensions.jdbc.mysql.AzureMysqlAuthenticationPlugin";
Properties properties = new Properties();
properties.put("defaultAuthenticationPlugin", pluginName);
properties.put("authenticationPlugins", pluginName);
// Uncomment the following lines corresponding to the authentication type you want to use.
// for user-assigned managed identity
// String clientId = System.getenv('AZURE_MYSQL_CLIENTID')
// properties.put("azure.clientId", clientId);
// For service principal
// String tenantId = System.getenv('AZURE_MYSQL_TENANTID')
// String clientId = System.getenv('AZURE_MYSQL_CLIENTID')
// String clientSecret = System.getenv('AZURE_MYSQL_CLIENTSECRET')
// properties.put("azure.clientId", clientId);
// properties.put("azure.clientSecret", clientSecret);
// properties.put("azure.tenantId", tenantId);
Connection connection = DriverManager.getConnection(url, properties);
لمزيد من المعلومات، راجع استخدام Java وJDBC مع Azure Database for MySQL - Flexible Server.
تثبيت التبعيات
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
المصادقة باستخدام رمز الوصول المميز الحصول على عبر azure-identity المكتبة والحصول على معلومات الاتصال من متغير البيئة المضافة بواسطة Service Connector. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
import mysql.connector
import os
# Uncomment the following lines corresponding to the authentication type you want to use.
# For system-assigned managed identity.
# cred = ManagedIdentityCredential()
# For user-assigned managed identity.
# managed_identity_client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# For service principal
# tenant_id = os.getenv('AZURE_MYSQL_TENANTID')
# client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# client_secret = os.getenv('AZURE_MYSQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# acquire token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# open connect to Azure MySQL with the access token.
host = os.getenv('AZURE_MYSQL_HOST')
database = os.getenv('AZURE_MYSQL_NAME')
user = os.getenv('AZURE_MYSQL_USER')
password = accessToken.token
cnx = mysql.connector.connect(user=user,
password=password,
host=host,
database=database)
cnx.close()
تثبيت التبعيات:
pip install azure-identity
احصل على الرمز المميز للوصول عبر azure-identity المكتبة مع متغيرات البيئة المضافة بواسطة Service Connector. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
import os
# Uncomment the following lines corresponding to the authentication type you want to use.
# system-assigned managed identity
# cred = ManagedIdentityCredential()
# user-assigned managed identity
# managed_identity_client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# service principal
# tenant_id = os.getenv('AZURE_MYSQL_TENANTID')
# client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# client_secret = os.getenv('AZURE_MYSQL_CLIENTSECRET')
# cred = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
# acquire token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
في إعداد الملف، احصل على معلومات قاعدة بيانات Azure MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. استخدم accessToken المكتسبة في الخطوة السابقة للوصول إلى قاعدة البيانات.
# in your setting file, eg. settings.py
host = os.getenv('AZURE_MYSQL_HOST')
database = os.getenv('AZURE_MYSQL_NAME')
user = os.getenv('AZURE_MYSQL_USER')
password = accessToken.token # this is accessToken acquired from above step.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': database,
'USER': user,
'PASSWORD': password,
'HOST': host
}
}
تثبيت التبعيات:
go get "github.com/go-sql-driver/mysql"
go get "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
go get "github.com/Azure/azure-sdk-for-go/sdk/azcore"
في التعليمات البرمجية، احصل على الرمز المميز للوصول عبر azidentity، ثم اتصل ب Azure MySQL باستخدام الرمز المميز. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import (
"context"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/go-sql-driver/mysql"
)
func main() {
// Uncomment the following lines corresponding to the authentication type you want to use.
// for system-assigned managed identity
// cred, err := azidentity.NewDefaultAzureCredential(nil)
// for user-assigned managed identity
// clientid := os.Getenv("AZURE_MYSQL_CLIENTID")
// azidentity.ManagedIdentityCredentialOptions.ID := clientid
// options := &azidentity.ManagedIdentityCredentialOptions{ID: clientid}
// cred, err := azidentity.NewManagedIdentityCredential(options)
// for service principal
// clientid := os.Getenv("AZURE_MYSQL_CLIENTID")
// tenantid := os.Getenv("AZURE_MYSQL_TENANTID")
// clientsecret := os.Getenv("AZURE_MYSQL_CLIENTSECRET")
// cred, err := azidentity.NewClientSecretCredential(tenantid, clientid, clientsecret, &azidentity.ClientSecretCredentialOptions{})
if err != nil {
}
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
token, err := cred.GetToken(ctx, policy.TokenRequestOptions{
Scopes: []string("https://ossrdbms-aad.database.windows.net/.default"),
})
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING") + ";Password=" + token.Token
db, err := sql.Open("mysql", connectionString)
}
تثبيت التبعيات
npm install --save @azure/identity
npm install --save mysql2
احصل على الرمز المميز للوصول باستخدام @azure/identity ومعلومات قاعدة بيانات Azure MySQL من متغيرات البيئة المضافة بواسطة خدمة Service Connector. عند استخدام التعليمات البرمجية أدناه، قم بإلغاء التعليق على جزء مقتطف التعليمات البرمجية لنوع المصادقة الذي تريد استخدامه.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
const mysql = require('mysql2');
// Uncomment the following lines corresponding to the authentication type you want to use.
// for system-assigned managed identity
// const credential = new DefaultAzureCredential();
// for user-assigned managed identity
// const clientId = process.env.AZURE_MYSQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// for service principal
// const tenantId = process.env.AZURE_MYSQL_TENANTID;
// const clientId = process.env.AZURE_MYSQL_CLIENTID;
// const clientSecret = process.env.AZURE_MYSQL_CLIENTSECRET;
// const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
// acquire token
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
const connection = mysql.createConnection({
host: process.env.AZURE_MYSQL_HOST,
user: process.env.AZURE_MYSQL_USER,
password: accessToken.token,
database: process.env.AZURE_MYSQL_DATABASE,
port: process.env.AZURE_MYSQL_PORT,
ssl: process.env.AZURE_MYSQL_SSL
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL database: ' + err.stack);
return;
}
console.log('Connected to MySQL database');
});
لمزيد من نماذج التعليمات البرمجية، راجع الاتصال بقواعد بيانات Azure من App Service بدون أسرار باستخدام هوية مدارة.
الخطوات التالية
اتبع الوثائق لمعرفة المزيد حول Service Connector.