Integrieren von Azure Database for MySQL mit Service Connector
Artikel
Auf dieser Seite werden unterstützte Authentifizierungsmethoden und Clients sowie Beispielcode gezeigt, den Sie verwenden können, um Azure Database for MySQL – Flexibler Server mit anderen Clouddiensten mithilfe des Dienstconnectors zu verbinden. Auf dieser Seite werden auch die Namen und Werte der Standardumgebungsvariablen (oder die Spring Boot-Konfiguration) angezeigt, die Sie erhalten, wenn Sie die Dienstverbindung erstellen.
Wichtig
Azure Database for MySQL Single Server wird eingestellt. Es wird dringend empfohlen, ein Upgrade auf Azure Database for MySQL Flexible Server auszuführen. Weitere Informationen zum Migrieren zu Azure Database for MySQL Flexible Server finden Sie unter Was geschieht mit Azure Database for MySQL Single Server?
Unterstützte Computedienste
Mit dem Dienstconnector können Sie die folgenden Computedienste mit Azure Database for MySQL verbinden:
Azure App Service
Azure Container Apps
Azure-Funktionen
Azure Kubernetes Service (AKS)
Azure Spring Apps
Unterstützte Authentifizierungstypen und Clienttypen
Die folgende Tabelle zeigt, welche Kombinationen von Authentifizierungsmethoden und Clients für die Verbindung Ihres Computediensts mit Azure Database for MySQL mithilfe des Dienstconnectors unterstützt werden. Ein „Ja“ gibt an, dass die Kombination unterstützt wird, während ein „Nein“ angibt, dass sie nicht unterstützt wird.
Clienttyp
Systemseitig zugewiesene verwaltete Identität
Benutzerseitig zugewiesene verwaltete Identität
Geheimnis/Verbindungszeichenfolge
Dienstprinzipal
.NET
Ja
Ja
Ja
Ja
Go (go-sql-driver for mysql)
Ja
Ja
Ja
Ja
Java (JDBC)
Ja
Ja
Ja
Ja
Java (Spring Boot)
Ja
Ja
Ja
Ja
Node.js (mysql)
Ja
Ja
Ja
Ja
Python (mysql-connector-python)
Ja
Ja
Ja
Ja
Python-Django
Ja
Ja
Ja
Ja
PHP (MySQLi)
Ja
Ja
Ja
Ja
Ruby (mysql2)
Ja
Ja
Ja
Ja
Keine
Ja
Ja
Ja
Ja
In der Tabelle wird angegeben, dass alle Kombinationen von Clienttypen und Authentifizierungsmethoden in der Tabelle unterstützt werden. Alle Clienttypen können jede der Authentifizierungsmethoden verwenden, um mithilfe des Dienstconnectors eine Verbindung mit Azure Database for MySQL herzustellen.
Hinweis
Systemseitig zugewiesene verwaltete Identität, benutzerseitig zugewiesene verwaltete Identität und Dienstprinzipal werden nur in der Azure-Befehlszeilenschnittstelle unterstützt.
Namen von Standard-Umgebungsvariablen oder Anwendungseigenschaften und Beispielcode
Nutzen Sie die Verbindungsdetails und den Beispielcode in den folgenden Tabellen für den Authentifizierungstyp und den Clienttyp Ihrer Verbindung, um Computedienste mit Azure Database for MySQL zu verbinden. Weitere Informationen zu Benennungskonventionen finden Sie im Artikel Besonderheiten des Dienstconnectors.
Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Database for MySQL mithilfe einer systemseitig zugewiesenen verwalteten Identität herzustellen.
Für .NET gibt es kein Plug-In und keine Bibliothek, die kennwortlose Verbindungen unterstützen. Sie können ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal mithilfe einer Clientbibliothek wie Azure.Identity abrufen. Anschließend können Sie das Zugriffstoken als Kennwort verwenden, um eine Verbindung mit der Datenbank herzustellen. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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
Fügen Sie der Datei pom.xml die folgenden Abhängigkeiten hinzu:
Rufen Sie die Verbindungszeichenfolge aus den Umgebungsvariablen ab, und fügen Sie den Plug-In-Namen hinzu, um eine Verbindung mit der Datenbank herzustellen:
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);
Spring-Anwendung: Wenn Sie mit der Option --client-type springboot eine Verbindung herstellen, legt der Dienstconnector die Eigenschaften spring.datasource.azure.passwordless-enabled, spring.datasource.url und spring.datasource.username auf Azure Spring Apps fest.
Authentifizieren Sie mit Zugriffstoken, die über die azure-identity-Bibliothek abgerufen werden, und rufen Sie Verbindungsinformationen aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wurde. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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()
Installieren Sie Abhängigkeiten.
pip install azure-identity
Rufen Sie ein Zugriffstoken über die azure-identity-Bibliothek mithilfe der Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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')
Rufen Sie in der Einstellungsdatei die Informationen zur Azure MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Verwenden Sie das im vorherigen Schritt abgerufene Zugriffstoken (accessToken), um auf die Datenbank zuzugreifen.
# 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
}
}
Installieren Sie Abhängigkeiten.
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"
Rufen Sie im Code das Zugriffstoken über azidentity ab, und stellen Sie dann mit dem Token eine Verbindung mit Azure MySQL her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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)
}
Rufen Sie einen Zugriffstoken mithilfe von @azure/identity und Azure MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurde. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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');
});
Für andere Sprachen können Sie die Verbindungszeichenfolge und den Benutzernamen verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.
Für andere Sprachen können Sie die Verbindungszeichenfolge und den Benutzernamen verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.
Für andere Sprachen können Sie die Verbindungseigenschaften verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.
Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Database for MySQL mithilfe einer benutzerseitig zugewiesenen verwalteten Identität herzustellen.
Für .NET gibt es kein Plug-In und keine Bibliothek, die kennwortlose Verbindungen unterstützen. Sie können ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal mithilfe einer Clientbibliothek wie Azure.Identity abrufen. Anschließend können Sie das Zugriffstoken als Kennwort verwenden, um eine Verbindung mit der Datenbank herzustellen. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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
Fügen Sie der Datei pom.xml die folgenden Abhängigkeiten hinzu:
Rufen Sie die Verbindungszeichenfolge aus den Umgebungsvariablen ab, und fügen Sie den Plug-In-Namen hinzu, um eine Verbindung mit der Datenbank herzustellen:
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);
Spring-Anwendung: Wenn Sie mit der Option --client-type springboot eine Verbindung herstellen, legt der Dienstconnector die Eigenschaften spring.datasource.azure.passwordless-enabled, spring.datasource.url und spring.datasource.username auf Azure Spring Apps fest.
Authentifizieren Sie mit Zugriffstoken, die über die azure-identity-Bibliothek abgerufen werden, und rufen Sie Verbindungsinformationen aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wurde. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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()
Installieren Sie Abhängigkeiten.
pip install azure-identity
Rufen Sie ein Zugriffstoken über die azure-identity-Bibliothek mithilfe der Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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')
Rufen Sie in der Einstellungsdatei die Informationen zur Azure MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Verwenden Sie das im vorherigen Schritt abgerufene Zugriffstoken (accessToken), um auf die Datenbank zuzugreifen.
# 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
}
}
Installieren Sie Abhängigkeiten.
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"
Rufen Sie im Code das Zugriffstoken über azidentity ab, und stellen Sie dann mit dem Token eine Verbindung mit Azure MySQL her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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)
}
Rufen Sie einen Zugriffstoken mithilfe von @azure/identity und Azure MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurde. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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');
});
Für andere Sprachen können Sie die Verbindungszeichenfolge und den Benutzernamen verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.
Für andere Sprachen können Sie die Verbindungszeichenfolge und den Benutzernamen verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.
Für andere Sprachen können Sie die Verbindungseigenschaften verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.
Microsoft empfiehlt, immer den sichersten Authentifizierungsflow zu verwenden. Der in diesem Verfahren beschriebene Authentifizierungsflow erfordert ein sehr hohes Maß an Vertrauen in die Anwendung und birgt Risiken, die bei anderen Flows nicht vorhanden sind. Sie sollten diesen Flow nur verwenden, wenn andere sicherere Flows (z. B. verwaltete Identitäten) nicht anwendbar sind.
Nachdem eine springboot-Clienttypverbindung erstellt wurde, fügt der Dienstconnectordienst automatisch die Eigenschaften spring.datasource.url, spring.datasource.username und spring.datasource.password hinzu. Die Spring Boot-Anwendung könnte also automatisch Beans hinzufügen.
Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Database for MySQL mithilfe einer Verbindungszeichenfolge herzustellen.
Rufen Sie im Code die MySQL-Verbindungszeichenfolge aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
using System;
using System.Data;
using MySql.Data.MySqlClient;
string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
}
Rufen Sie im Code die MySQL-Verbindungszeichenfolge aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
Richten Sie eine normale Spring App-Anwendung ein. Weitere Informationen finden Sie in diesem Abschnitt. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
Rufen Sie im Code die MySQL-Verbindungsinformationen aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
Rufen Sie in der Einstellungsdatei die Informationen zur MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
Rufen Sie im Code die MySQL-Verbindungszeichenfolge aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
Rufen Sie im Code die MySQL-Verbindungsinformationen aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
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.');
});
Rufen Sie im Code die MySQL-Verbindungsinformationen aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
Rufen Sie im Code die MySQL-Verbindungsinformationen aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Um eine verschlüsselte Verbindung mit dem MySQL-Server über SSL herzustellen, befolgen Sie diese Schritte.
Für andere Sprachen können Sie die Verbindungseigenschaften verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.
Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Database for MySQL mithilfe eines Dienstprinzipals herzustellen.
Für .NET gibt es kein Plug-In und keine Bibliothek, die kennwortlose Verbindungen unterstützen. Sie können ein Zugriffstoken für die verwaltete Identität oder den Dienstprinzipal mithilfe einer Clientbibliothek wie Azure.Identity abrufen. Anschließend können Sie das Zugriffstoken als Kennwort verwenden, um eine Verbindung mit der Datenbank herzustellen. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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
Fügen Sie der Datei pom.xml die folgenden Abhängigkeiten hinzu:
Rufen Sie die Verbindungszeichenfolge aus den Umgebungsvariablen ab, und fügen Sie den Plug-In-Namen hinzu, um eine Verbindung mit der Datenbank herzustellen:
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);
Spring-Anwendung: Wenn Sie mit der Option --client-type springboot eine Verbindung herstellen, legt der Dienstconnector die Eigenschaften spring.datasource.azure.passwordless-enabled, spring.datasource.url und spring.datasource.username auf Azure Spring Apps fest.
Authentifizieren Sie mit Zugriffstoken, die über die azure-identity-Bibliothek abgerufen werden, und rufen Sie Verbindungsinformationen aus der Umgebungsvariable ab, die vom Dienstconnector hinzugefügt wurde. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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()
Installieren Sie Abhängigkeiten.
pip install azure-identity
Rufen Sie ein Zugriffstoken über die azure-identity-Bibliothek mithilfe der Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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')
Rufen Sie in der Einstellungsdatei die Informationen zur Azure MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurden. Verwenden Sie das im vorherigen Schritt abgerufene Zugriffstoken (accessToken), um auf die Datenbank zuzugreifen.
# 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
}
}
Installieren Sie Abhängigkeiten.
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"
Rufen Sie im Code das Zugriffstoken über azidentity ab, und stellen Sie dann mit dem Token eine Verbindung mit Azure MySQL her. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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)
}
Rufen Sie einen Zugriffstoken mithilfe von @azure/identity und Azure MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Dienstconnector hinzugefügt wurde. Wenn Sie den folgenden Code verwenden, heben Sie die Auskommentierung des Teils des Codeschnipsels für den Authentifizierungstyp auf, den Sie verwenden möchten.
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');
});
Für andere Sprachen können Sie die Verbindungszeichenfolge und den Benutzernamen verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.
Für andere Sprachen können Sie die Verbindungszeichenfolge und den Benutzernamen verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.
Für andere Sprachen können Sie die Verbindungseigenschaften verwenden, die der Dienstconnector auf die Umgebungsvariablen festgelegt hat, um eine Verbindung mit der Datenbank herzustellen. Weitere Informationen zu Umgebungsvariablen finden Sie unter Integrieren von Azure Database for MySQL mit Dienstconnector.