In diesem Artikel werden unterstützte Authentifizierungsmethoden, Clients und Beispielcode behandelt, mit dem Sie Ihre Apps mit Azure Database for MySQL verbinden können – flexibler Server mit Service Connector. In diesem Artikel finden Sie auch standardumgebungsvariable Namen, Werte und Konfigurationen, die beim Erstellen von Dienstverbindungen abgerufen werden.
Wichtig
Azure Database for MySQL Single Server geht in den Ruhestand. 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 Rechendienste
Mit dem Dienstconnector können Sie die folgenden Computedienste mit Azure Database for MySQL verbinden:
- Azure App Service
- Azure-Funktionen
- Azure Kubernetes Service (AKS)
- Azure Spring Apps
Unterstützte Authentifizierungstypen und Clienttypen
Die folgende Tabelle zeigt, welche Kombinationen von Authentifizierungsmethoden und Clients unterstützt werden, um Ihre Computedienste mit Azure Database for MySQL mithilfe von Service Connector zu verbinden. 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 |
Geheimer Schlüssel/Verbindungszeichenfolge |
Service Principal |
| .NET |
Ja |
Ja |
Ja |
Ja |
| Go (go-sql-driver for mysql) |
Ja |
Ja |
Ja |
Ja |
| Java (JDBC) |
Ja |
Ja |
Ja |
Ja |
| Java - Spring Boot (JDBC) |
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 |
Hinweis
Vom System zugewiesene verwaltete Identität, vom Benutzer zugewiesene verwaltete Identität und Dienstprinzipalauthentifizierung werden nur in Azure CLI unterstützt.
Namen von Standard-Umgebungsvariablen oder Anwendungseigenschaften und Beispielcode
Verweisen Sie auf die Verbindungsdetails und den Beispielcode in den folgenden Tabellen, basierend auf dem Authentifizierungstyp und dem Clienttyp Ihrer Verbindung, um Ihre Computedienste mit Azure Database for MySQL zu verbinden. Weitere Informationen zu Benennungskonventionen finden Sie unter Interne Funktionsweise von Service Connector.
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.
Abhängigkeiten installieren
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 sich mit dem Access Token, das Sie über die Bibliothek azure-identity erhalten, und rufen Sie die Verbindungsinformationen aus der von Service Connector hinzugefügten Umgebungsvariable ab. 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 mithilfe der azure-identity-Bibliothek ein Zugriffstoken über die vom Service Connector hinzugefügten Umgebungsvariablen ab. 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 Konfigurationsdatei die Informationen zur Azure MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Service Connector-Dienst 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)
}
Abhängigkeiten installieren
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 Programmiersprachen verwenden Sie die Verbindungszeichenfolge und den Benutzernamen, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
Für andere Programmiersprachen verwenden Sie die Verbindungszeichenfolge und den Benutzernamen, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
Für andere Programmiersprachen verwenden Sie die Verbindungseigenschaften, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
Weitere Codebeispiele finden Sie unter Verbindungsherstellung mit Azure-Datenbanken über App Service ohne Geheimnisse mithilfe einer verwalteten Identität.
Benutzerseitig zugewiesene verwaltete Identität
| 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 |
Datenbank-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.
Abhängigkeiten installieren
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 sich mit dem Access Token, das Sie über die Bibliothek azure-identity erhalten, und rufen Sie die Verbindungsinformationen aus der von Service Connector hinzugefügten Umgebungsvariable ab. 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 mithilfe der azure-identity-Bibliothek ein Zugriffstoken über die vom Service Connector hinzugefügten Umgebungsvariablen ab. 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 Konfigurationsdatei die Informationen zur Azure MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Service Connector-Dienst 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)
}
Abhängigkeiten installieren
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 Programmiersprachen verwenden Sie die Verbindungszeichenfolge und den Benutzernamen, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
Für andere Programmiersprachen verwenden Sie die Verbindungszeichenfolge und den Benutzernamen, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
Für andere Programmiersprachen verwenden Sie die Verbindungseigenschaften, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
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 Dienst „Service Connector“ 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 Dienst „Service Connector“ 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 Service-Connector-Dienst 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 Konfigurationsdatei die MySQL-Datenbankinformationen aus den Umgebungsvariablen ab, die vom Dienst Service Connector 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 Dienst „Service Connector“ 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 Service-Connector-Dienst 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 Service-Connector-Dienst 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 Service-Connector-Dienst 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 Programmiersprachen verwenden Sie die Verbindungseigenschaften, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
Service Principal
| Standardname der Umgebungsvariablen |
Beschreibung |
Beispielswert |
AZURE_MYSQL_CLIENTID |
Ihre Client-ID |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Ihr Clientgeheimnis |
<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 Clientgeheimnis |
<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 Clientgeheimnis |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
Ihre Mandanten-ID |
<tenant-ID> |
spring.datasource.url |
Datenbank-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 Clientgeheimnis |
<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 Clientgeheimnis |
<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 Clientgeheimnis |
<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 Clientgeheimnis |
<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 Clientgeheimnis |
<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 Clientgeheimnis |
<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 Clientgeheimnis |
<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.
Abhängigkeiten installieren
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 sich mit dem Access Token, das Sie über die Bibliothek azure-identity erhalten, und rufen Sie die Verbindungsinformationen aus der von Service Connector hinzugefügten Umgebungsvariable ab. 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 mithilfe der azure-identity-Bibliothek ein Zugriffstoken über die vom Service Connector hinzugefügten Umgebungsvariablen ab. 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 Konfigurationsdatei die Informationen zur Azure MySQL-Datenbank aus den Umgebungsvariablen ab, die vom Service Connector-Dienst 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)
}
Abhängigkeiten installieren
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 Programmiersprachen verwenden Sie die Verbindungszeichenfolge und den Benutzernamen, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
Für andere Programmiersprachen verwenden Sie die Verbindungszeichenfolge und den Benutzernamen, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
Für andere Programmiersprachen verwenden Sie die Verbindungseigenschaften, die Service Connector in den Umgebungsvariablen festlegt, um eine Verbindung mit der Datenbank herzustellen. Details zu Umgebungsvariablen finden Sie unter Azure Database for MySQL mit Service Connector integrieren.
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.