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.
Systemseitig zugewiesene verwaltete Identität
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET-MySQL-Verbindungszeichenfolge |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CONNECTIONSTRING |
JDBC-MySQL-Verbindungszeichenfolge |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Anwendungseigenschaften |
Beschreibung |
Beispielswert |
spring.datasource.azure.passwordless-enabled |
Aktivieren der kennwortlosen Authentifizierung |
true |
spring.datasource.url |
Spring Boot-JDBC-Datenbank-URL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Datenbankbenutzername |
<MySQL-DB-username> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_NAME |
Datenbankname |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_NAME |
Datenbankname |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CONNECTIONSTRING |
Go-sql-driver-Verbindungszeichenfolge |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Datenbankname |
<database-name> |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_SSL |
SSL-Option |
true |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_DBNAME |
Datenbankname |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_FLAG |
SSL oder andere Flags |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
<MySQL-DB-username> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_DATABASE |
Datenbankname |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
SSL-Option |
required |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Datenbankname |
<database-name> |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_SSL |
SSL-Option |
true |
Beispielcode
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:
<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>
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);
Weitere Informationen finden Sie unter Verwenden von Java und JDBC mit Azure Database for MySQL – Flexibler Server.
Installieren von Abhängigkeiten
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
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)
}
Installieren von Abhängigkeiten
npm install --save @azure/identity
npm install --save mysql2
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.
Weitere Codebeispiele finden Sie unter Verbindungsherstellung mit Azure-Datenbanken über App Service ohne Geheimnisse mithilfe einer verwalteten Identität.
Dem Benutzer zugewiesene Managed Identity
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET-MySQL-Verbindungszeichenfolge |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
JDBC-MySQL-Verbindungszeichenfolge |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Anwendungseigenschaften |
Beschreibung |
Beispielswert |
spring.datasource.azure.passwordless-enabled |
Aktivieren der kennwortlosen Authentifizierung |
true |
spring.cloud.azure.credential.client-id |
Ihre Client-ID |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
Aktivieren einer clientseitig verwalteten Identität |
true |
spring.datasource.url |
DATABASE URL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Datenbankbenutzername |
username |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_NAME |
Datenbankname |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
identity-client-ID |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_NAME |
Datenbankname |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<identity-client-ID> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Go-sql-driver-Verbindungszeichenfolge |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Datenbankname |
<database-name> |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_SSL |
SSL-Option |
true |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<identity-client-ID> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_DBNAME |
Datenbankname |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_FLAG |
SSL oder andere Flags |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<identity-client-ID> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_DATABASE |
Datenbankname |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
SSL-Option |
required |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<identity-client-ID> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Datenbankname |
<database-name> |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_SSL |
SSL-Option |
true |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<identity-client-ID> |
Beispielcode
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:
<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>
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);
Weitere Informationen finden Sie unter Verwenden von Java und JDBC mit Azure Database for MySQL – Flexibler Server.
Installieren von Abhängigkeiten
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
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)
}
Installieren von Abhängigkeiten
npm install --save @azure/identity
npm install --save mysql2
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.
Weitere Codebeispiele finden Sie unter Verbindungsherstellung mit Azure-Datenbanken über App Service ohne Geheimnisse mithilfe einer verwalteten Identität.
Verbindungszeichenfolge
Warnung
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.
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET-MySQL-Verbindungszeichenfolge |
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 |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CONNECTIONSTRING |
JDBC-MySQL-Verbindungszeichenfolge |
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>) |
| Anwendungseigenschaften |
Beschreibung |
Beispielswert |
spring.datasource.url |
Spring Boot-JDBC-Datenbank-URL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Datenbankbenutzername |
<MySQL-DB-username> |
spring.datasource.password |
Datenbankkennwort |
MySQL-DB-password |
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.
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_NAME |
Datenbankname |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Datenbankkennwort |
MySQL-DB-password |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_NAME |
Datenbankname |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Datenbankkennwort |
MySQL-DB-password |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CONNECTIONSTRING |
Go-sql-driver-Verbindungszeichenfolge |
<MySQL-DB-username>:<MySQL-DB-password>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Datenbankkennwort |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Datenbankname |
<database-name> |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_SSL |
SSL-Option |
true |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_DBNAME |
Datenbankname |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_FLAG |
SSL oder andere Flags |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
<MySQL-DB-username> |
AZURE_MYSQL_PASSWORD |
Datenbankkennwort |
<MySQL-DB-password> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_DATABASE |
Datenbankname |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Datenbankkennwort |
<MySQL-DB-password> |
AZURE_MYSQL_SSLMODE |
SSL-Option |
required |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Datenbankkennwort |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Datenbankname |
<database-name> |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_SSL |
SSL-Option |
true |
Beispielcode
Nutzen Sie die folgenden Schritte und den folgenden Code, um eine Verbindung mit Azure Database for MySQL mithilfe einer Verbindungszeichenfolge herzustellen.
- Installieren Sie Abhängigkeiten. Befolgen Sie die Anleitungen zum Installieren von Connector/NET MySQL.
- 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();
}
- Installieren Sie Abhängigkeiten. Befolgen Sie die Anweisungen zum Installieren von Connector/J.
- 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.
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();
}
- Installieren Sie Abhängigkeiten. Fügen Sie Ihrer
pom.xml-Datei die folgenden Abhängigkeiten hinzu.
<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>
- 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.
- Installieren Sie Abhängigkeiten. Befolgen Sie die Anweisungen zum Installieren von Connector/Python.
- 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.
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()
- Installieren Sie Abhängigkeiten.
pip install django
- 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.
# 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
}
}
- Installieren Sie Abhängigkeiten.
go get -u github.com/go-sql-driver/mysql
- 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.
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
)
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING")
db, err := sql.Open("mysql", connectionString)
- Installieren Sie Abhängigkeiten.
npm install mysql2
- 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.');
});
- Installieren Sie Abhängigkeiten. Folgen Sie der Anleitung zum Installieren von MySQLi.
- 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.
<?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);
?>
- Installieren Sie Abhängigkeiten.
gem install mysql2
- 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.
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
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.
Dienstprinzipal
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr geheimer Clientschlüssel |
<client-secret> |
AZURE_MYSQL_TENANTID |
Ihre Mandanten-ID |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET-MySQL-Verbindungszeichenfolge |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr geheimer Clientschlüssel |
<client-secret> |
AZURE_MYSQL_TENANTID |
Ihre Mandanten-ID |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
JDBC-MySQL-Verbindungszeichenfolge |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Anwendungseigenschaften |
Beschreibung |
Beispielswert |
spring.datasource.azure.passwordless-enabled |
Aktivieren der kennwortlosen Authentifizierung |
true |
spring.cloud.azure.credential.client-id |
Ihre Client-ID |
<client-ID> |
spring.cloud.azure.credential.client-secret |
Ihr geheimer Clientschlüssel |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
Ihre Mandanten-ID |
<tenant-ID> |
spring.datasource.url |
DATABASE URL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Datenbankbenutzername |
username |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_NAME |
Datenbankname |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr geheimer Clientschlüssel |
<client-secret> |
AZURE_MYSQL_TENANTID |
Ihre Mandanten-ID |
<tenant-ID> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_NAME |
Datenbankname |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr geheimer Clientschlüssel |
<client-secret> |
AZURE_MYSQL_TENANTID |
Ihre Mandanten-ID |
<tenant-ID> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr geheimer Clientschlüssel |
<client-secret> |
AZURE_MYSQL_TENANTID |
Ihre Mandanten-ID |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Go-sql-driver-Verbindungszeichenfolge |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Datenbankbenutzername |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Datenbankname |
<database-name> |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_SSL |
SSL-Option |
true |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr geheimer Clientschlüssel |
<client-secret> |
AZURE_MYSQL_TENANTID |
Ihre Mandanten-ID |
<tenant-ID> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_DBNAME |
Datenbankname |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_FLAG |
SSL oder andere Flags |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr geheimer Clientschlüssel |
<client-secret> |
AZURE_MYSQL_TENANTID |
Ihre Mandanten-ID |
<tenant-ID> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_DATABASE |
Datenbankname |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
SSL-Option |
required |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr geheimer Clientschlüssel |
<client-secret> |
AZURE_MYSQL_TENANTID |
Ihre Mandanten-ID |
<tenant-ID> |
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_HOST |
URL des Datenbankhosts |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Datenbankbenutzername |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Datenbankname |
<database-name> |
AZURE_MYSQL_PORT |
Portnummer |
3306 |
AZURE_MYSQL_SSL |
SSL-Option |
true |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<identity-client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr geheimer Clientschlüssel |
<client-secret> |
AZURE_MYSQL_TENANTID |
Ihre Mandanten-ID |
<tenant-ID> |
Beispielcode
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:
<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>
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);
Weitere Informationen finden Sie unter Verwenden von Java und JDBC mit Azure Database for MySQL – Flexibler Server.
Installieren von Abhängigkeiten
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
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)
}
Installieren von Abhängigkeiten
npm install --save @azure/identity
npm install --save mysql2
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.
Weitere Codebeispiele finden Sie unter Verbindungsherstellung mit Azure-Datenbanken über App Service ohne Geheimnisse mithilfe einer verwalteten Identität.
Nächste Schritte
Lesen Sie die Dokumentationen, um mehr über Service Connector zu erfahren.