Cette page présente les méthodes d’authentification et les clients pris en charge, et présente des exemples de code que vous pouvez utiliser pour connecter Azure Database pour MySQL – Serveur flexible à d’autres services cloud en utilisant Service Connector. Cette page présente également les noms et les valeurs des variables d’environnement par défaut (ou configuration Spring Boot) que vous obtenez lorsque vous créez des connexions de service.
Important
Le serveur unique Azure Database pour MySQL est en voie de mise hors service. Nous vous conseillons vivement de procéder à une mise à niveau vers Azure Database pour MySQL – Serveur flexible. Pour obtenir plus d’informations sur la migration vers Azure Database pour MySQL – Serveur flexible, consultez Qu’en est-il du Serveur unique Azure Database pour MySQL ?
Service de calcul pris en charge
Service Connector peut être utilisé pour connecter les services de calcul suivants à Azure Database pour MySQL :
- Azure App Service
- Azure Container Apps
- Azure Functions
- Azure Kubernetes Service (AKS)
- Azure Spring Apps
Types d’authentification et de clients pris en charge
Le tableau ci-dessous montre les combinaisons méthodes d’authentification/clients prises en charge pour connecter votre service de calcul à Azure Database pour MySQL en utilisant le connecteur de services. « Oui » indique que la combinaison est prise en charge, tandis que « Non » indique qu’elle n’est pas prise en charge.
| Type de client |
Identité managée affectée par le système |
Identité managée affectée par l’utilisateur |
Secret/chaîne de connexion |
Principal du service |
| .NET |
Oui |
Oui |
Oui |
Oui |
| Go (pilote go-sql-driver pour MySQL) |
Oui |
Oui |
Oui |
Oui |
| Java (JDBC) |
Oui |
Oui |
Oui |
Oui |
| Java – Spring Boot (JDBC) |
Oui |
Oui |
Oui |
Oui |
| Node.js (mysql) |
Oui |
Oui |
Oui |
Oui |
| Python (mysql-connector-python) |
Oui |
Oui |
Oui |
Oui |
| Python-Django |
Oui |
Oui |
Oui |
Oui |
| PHP (mysqli) |
Oui |
Oui |
Oui |
Oui |
| Ruby (mysql2) |
Oui |
Oui |
Oui |
Oui |
| Aucun |
Oui |
Oui |
Oui |
Oui |
Ce tableau indique que toutes les combinaisons de types client et de méthodes d’authentification dans la table sont prises en charge. Tous les types client peuvent utiliser l’une quelconque des méthodes d’authentification pour se connecter à Azure Database pour MySQL en utilisant le connecteur de services.
Remarque
Identité managée affectée par le système, Identité managée affectée par l’utilisateur et Principal de service ne sont pris en charge que sur Azure CLI.
Noms des variables d’environnement par défaut ou propriétés de l’application et exemple de code
Référencez les détails de connexion et l’exemple de code dans les tableaux suivants, en fonction du type d’authentification et du type client de votre connexion, pour connecter des services de calcul à Azure Database pour MySQL. Pour plus d’informations sur les conventions d’affectation de noms, consultez l’article Services internes du connecteur de services.
Identité managée affectée par le système
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Propriétés de l’application |
Description |
Exemple de valeur |
spring.datasource.azure.passwordless-enabled |
Activez l’authentification sans mot de passe |
true |
spring.datasource.url |
URL de la base de données JDBC Spring Boot |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nom d’utilisateur de la base de données |
<MySQL-DB-username> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_NAME |
Nom de la base de données |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_NAME |
Nom de la base de données |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion du pilote Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<database-name> |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_SSL |
Option SSL |
true |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_DBNAME |
Nom de la base de données |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_FLAG |
SSL ou autres indicateurs |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
<MySQL-DB-username> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Option SSL |
required |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<database-name> |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_SSL |
Option SSL |
true |
Exemple de code
Reportez-vous aux étapes et au code ci-dessous pour vous connecter à Azure Database pour MySQL en utilisant une identité managée affectée par le système.
Pour .NET, il n’existe pas de plug-in ou de bibliothèque pour prendre en charge les connexions sans mot de passe. Vous pouvez obtenir un jeton d’accès pour l’identité managée ou le principal de service à l’aide d’une bibliothèque cliente telle que Azure.Identity. Vous pouvez ensuite utiliser le jeton d’accès comme mot de passe pour vous connecter à la base de données. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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
Ajoutez les dépendances suivantes dans votre fichier pom.xml :
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.2.0</version>
</dependency>
Obtenez la chaîne de connexion à partir de la variable d’environnement et ajoutez le nom du plug-in pour vous connecter à la base de données :
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);
Pour plus d’informations, consultez l’article Utiliser Java et JDBC avec Azure Database pour MySQL – Serveur flexible.
Installer des dépendances
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Authentifiez-vous avec le jeton d’accès via la bibliothèque azure-identity et obtenez des informations de connexion à partir de la variable d’environnement ajoutée par le connecteur de services. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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()
Installez des dépendances.
pip install azure-identity
Obtenez le jeton d’accès via la bibliothèque azure-identity avec les variables d’environnement ajoutées par le connecteur de services. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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')
Dans le fichier de paramètres, obtenez les informations de base de données Azure MySQL à partir de variables d’environnement ajoutées par le service Service Connector. Utilisez accessToken obtenu à l’étape précédente pour accéder à la base de données.
# 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
}
}
Installez des dépendances.
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"
Dans le code, obtenez le jeton d’accès via azidentity, puis connectez-vous à Azure MySQL avec le jeton. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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)
}
Installer des dépendances
npm install --save @azure/identity
npm install --save mysql2
Obtenez un jeton d’accès en utilisant @azure/identity et les informations de base de données Azure MySQL à partir de variables d’environnement ajoutées par le service Service Connector. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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');
});
Pour les autres langages, utilisez la chaîne de connexion et le nom d’utilisateur définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Pour les autres langages, utilisez la chaîne de connexion et le nom d’utilisateur définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Pour les autres langages, utilisez les propriétés de connexion définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Pour obtenir d’autres exemples de code, consultez la section Connexion à des bases de données Azure à partir d’App Service sans secrets à l’aide d’une identité managée.
Identité managée affectée par l’utilisateur
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Propriétés de l’application |
Description |
Exemple de valeur |
spring.datasource.azure.passwordless-enabled |
Activez l’authentification sans mot de passe |
true |
spring.cloud.azure.credential.client-id |
Votre ID client |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
Activez l’identité managée client |
true |
spring.datasource.url |
DATABASE_URL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nom d’utilisateur de la base de données |
username |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_NAME |
Nom de la base de données |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Votre ID client |
identity-client-ID |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_NAME |
Nom de la base de données |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<identity-client-ID> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion du pilote Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<database-name> |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_SSL |
Option SSL |
true |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<identity-client-ID> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_DBNAME |
Nom de la base de données |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_FLAG |
SSL ou autres indicateurs |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<identity-client-ID> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Option SSL |
required |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<identity-client-ID> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<database-name> |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_SSL |
Option SSL |
true |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<identity-client-ID> |
Exemple de code
Reportez-vous aux étapes et au code ci-dessous pour vous connecter à Azure Database pour MySQL en utilisant une identité managée affectée par l’utilisateur(-trice).
Pour .NET, il n’existe pas de plug-in ou de bibliothèque pour prendre en charge les connexions sans mot de passe. Vous pouvez obtenir un jeton d’accès pour l’identité managée ou le principal de service à l’aide d’une bibliothèque cliente telle que Azure.Identity. Vous pouvez ensuite utiliser le jeton d’accès comme mot de passe pour vous connecter à la base de données. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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
Ajoutez les dépendances suivantes dans votre fichier pom.xml :
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.2.0</version>
</dependency>
Obtenez la chaîne de connexion à partir de la variable d’environnement et ajoutez le nom du plug-in pour vous connecter à la base de données :
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);
Pour plus d’informations, consultez l’article Utiliser Java et JDBC avec Azure Database pour MySQL – Serveur flexible.
Installer des dépendances
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Authentifiez-vous avec le jeton d’accès via la bibliothèque azure-identity et obtenez des informations de connexion à partir de la variable d’environnement ajoutée par le connecteur de services. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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()
Installez des dépendances.
pip install azure-identity
Obtenez le jeton d’accès via la bibliothèque azure-identity avec les variables d’environnement ajoutées par le connecteur de services. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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')
Dans le fichier de paramètres, obtenez les informations de base de données Azure MySQL à partir de variables d’environnement ajoutées par le service Service Connector. Utilisez accessToken obtenu à l’étape précédente pour accéder à la base de données.
# 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
}
}
Installez des dépendances.
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"
Dans le code, obtenez le jeton d’accès via azidentity, puis connectez-vous à Azure MySQL avec le jeton. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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)
}
Installer des dépendances
npm install --save @azure/identity
npm install --save mysql2
Obtenez un jeton d’accès en utilisant @azure/identity et les informations de base de données Azure MySQL à partir de variables d’environnement ajoutées par le service Service Connector. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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');
});
Pour les autres langages, utilisez la chaîne de connexion et le nom d’utilisateur définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Pour les autres langages, utilisez la chaîne de connexion et le nom d’utilisateur définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Pour les autres langages, utilisez les propriétés de connexion définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Pour obtenir d’autres exemples de code, consultez la section Connexion à des bases de données Azure à partir d’App Service sans secrets à l’aide d’une identité managée.
Chaîne de connexion
Avertissement
Microsoft vous recommande d’utiliser le flux d’authentification le plus sécurisé disponible. Le flux d'authentification décrit dans cette procédure demande un degré de confiance très élevé dans l'application et comporte des risques qui ne sont pas présents dans d'autres flux. Vous ne devez utiliser ce flux que si d’autres flux plus sécurisés, tels que les identités managées, ne sont pas viables.
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;Password=<MySQL-DB-password>;SSL Mode=Required |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username>&password=<Uri.EscapeDataString(<MySQL-DB-password>) |
| Propriétés de l’application |
Description |
Exemple de valeur |
spring.datasource.url |
URL de la base de données JDBC Spring Boot |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nom d’utilisateur de la base de données |
<MySQL-DB-username> |
spring.datasource.password |
Mot de passe de la base de données |
MySQL-DB-password |
Après avoir créé une connexion de type client springboot, le connecteur de services ajoute automatiquement des propriétés spring.datasource.url, spring.datasource.username, spring.datasource.password. L’application Spring boot peut donc ajouter automatiquement des haricots.
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_NAME |
Nom de la base de données |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Mot de passe de la base de données |
MySQL-DB-password |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_NAME |
Nom de la base de données |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Mot de passe de la base de données |
MySQL-DB-password |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion du pilote Go-sql-driver |
<MySQL-DB-username>:<MySQL-DB-password>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Mot de passe de la base de données |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<database-name> |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_SSL |
Option SSL |
true |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_DBNAME |
Nom de la base de données |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_FLAG |
SSL ou autres indicateurs |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
<MySQL-DB-username> |
AZURE_MYSQL_PASSWORD |
Mot de passe de la base de données |
<MySQL-DB-password> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Mot de passe de la base de données |
<MySQL-DB-password> |
AZURE_MYSQL_SSLMODE |
Option SSL |
required |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Mot de passe de la base de données |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<database-name> |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_SSL |
Option SSL |
true |
Exemple de code
Reportez-vous aux étapes et au code ci-dessous pour vous connecter à Azure Database pour MySQL en utilisant une chaîne de connexion.
- Installez des dépendances. Suivez les instructions pour installer connector/NET MySQL
- Dans le code, obtenez la chaîne de connexion MySQL depuis les variables d’environnement ajoutées par le connecteur de services. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
using System;
using System.Data;
using MySql.Data.MySqlClient;
string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
}
- Installez des dépendances. Suivez les instructions pour installer le Connecteur/J.
- Dans le code, obtenez la chaîne de connexion MySQL depuis les variables d’environnement ajoutées par le connecteur de services. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
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();
}
- Installez des dépendances. Ajoutez les dépendances suivantes à votre fichier
pom.xml.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.20.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
- Configurez une application normale Spring App, plus de détails dans cette section. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
- Installez des dépendances. Suivez les instructions pour installer le Connecteur/Python.
- Dans le code, obtenez les informations de connexion MySQL depuis les variables d’environnement ajoutées par le connecteur de services. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
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()
- Installez des dépendances.
pip install django
- Dans le fichier de paramètres, obtenez les informations de base de données MySQL à partir de variables d’environnement ajoutées par le connecteur de services. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
# 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
}
}
- Installez des dépendances.
go get -u github.com/go-sql-driver/mysql
- Dans le code, obtenez la chaîne de connexion MySQL depuis les variables d’environnement ajoutées par le connecteur de services. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
)
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING")
db, err := sql.Open("mysql", connectionString)
- Installez des dépendances.
npm install mysql2
- Dans le code, obtenez les informations de connexion MySQL depuis les variables d’environnement ajoutées par le connecteur de services. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
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.');
});
- Installez des dépendances. Suivez le guide pour installer MySQLi.
- Dans le code, obtenez les informations de connexion MySQL depuis les variables d’environnement ajoutées par le connecteur de services. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
<?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);
?>
- Installez des dépendances.
gem install mysql2
- Dans le code, obtenez les informations de connexion MySQL depuis les variables d’environnement ajoutées par le connecteur de services. Pour établir une connexion chiffrée au serveur MySQL via SSL, reportez-vous à ces étapes.
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
Pour les autres langages, utilisez les propriétés de connexion définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Principal du service
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Votre clé secrète client |
<client-secret> |
AZURE_MYSQL_TENANTID |
Votre ID d’abonné |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Votre clé secrète client |
<client-secret> |
AZURE_MYSQL_TENANTID |
Votre ID d’abonné |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Propriétés de l’application |
Description |
Exemple de valeur |
spring.datasource.azure.passwordless-enabled |
Activez l’authentification sans mot de passe |
true |
spring.cloud.azure.credential.client-id |
Votre ID client |
<client-ID> |
spring.cloud.azure.credential.client-secret |
Votre clé secrète client |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
Votre ID d’abonné |
<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 |
Nom d’utilisateur de la base de données |
username |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_NAME |
Nom de la base de données |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Votre clé secrète client |
<client-secret> |
AZURE_MYSQL_TENANTID |
Votre ID d’abonné |
<tenant-ID> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_NAME |
Nom de la base de données |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Votre clé secrète client |
<client-secret> |
AZURE_MYSQL_TENANTID |
Votre ID d’abonné |
<tenant-ID> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Votre clé secrète client |
<client-secret> |
AZURE_MYSQL_TENANTID |
Votre ID d’abonné |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Chaîne de connexion du pilote Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nom d’utilisateur de la base de données |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<database-name> |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_SSL |
Option SSL |
true |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Votre clé secrète client |
<client-secret> |
AZURE_MYSQL_TENANTID |
Votre ID d’abonné |
<tenant-ID> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_DBNAME |
Nom de la base de données |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_FLAG |
SSL ou autres indicateurs |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Votre clé secrète client |
<client-secret> |
AZURE_MYSQL_TENANTID |
Votre ID d’abonné |
<tenant-ID> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Option SSL |
required |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Votre clé secrète client |
<client-secret> |
AZURE_MYSQL_TENANTID |
Votre ID d’abonné |
<tenant-ID> |
| Nom de variable d’environnement par défaut |
Description |
Exemple de valeur |
AZURE_MYSQL_HOST |
URL de l’hôte de la base de données |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nom d’utilisateur de la base de données |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nom de la base de données |
<database-name> |
AZURE_MYSQL_PORT |
Numéro de port |
3306 |
AZURE_MYSQL_SSL |
Option SSL |
true |
AZURE_MYSQL_CLIENTID |
Votre ID client |
<identity-client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Votre clé secrète client |
<client-secret> |
AZURE_MYSQL_TENANTID |
Votre ID d’abonné |
<tenant-ID> |
Exemple de code
Reportez-vous aux étapes et au code ci-dessous pour vous connecter à Azure Database pour MySQL en utilisant un principal de service.
Pour .NET, il n’existe pas de plug-in ou de bibliothèque pour prendre en charge les connexions sans mot de passe. Vous pouvez obtenir un jeton d’accès pour l’identité managée ou le principal de service à l’aide d’une bibliothèque cliente telle que Azure.Identity. Vous pouvez ensuite utiliser le jeton d’accès comme mot de passe pour vous connecter à la base de données. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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
Ajoutez les dépendances suivantes dans votre fichier pom.xml :
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.2.0</version>
</dependency>
Obtenez la chaîne de connexion à partir de la variable d’environnement et ajoutez le nom du plug-in pour vous connecter à la base de données :
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);
Pour plus d’informations, consultez l’article Utiliser Java et JDBC avec Azure Database pour MySQL – Serveur flexible.
Installer des dépendances
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Authentifiez-vous avec le jeton d’accès via la bibliothèque azure-identity et obtenez des informations de connexion à partir de la variable d’environnement ajoutée par le connecteur de services. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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()
Installez des dépendances.
pip install azure-identity
Obtenez le jeton d’accès via la bibliothèque azure-identity avec les variables d’environnement ajoutées par le connecteur de services. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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')
Dans le fichier de paramètres, obtenez les informations de base de données Azure MySQL à partir de variables d’environnement ajoutées par le service Service Connector. Utilisez accessToken obtenu à l’étape précédente pour accéder à la base de données.
# 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
}
}
Installez des dépendances.
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"
Dans le code, obtenez le jeton d’accès via azidentity, puis connectez-vous à Azure MySQL avec le jeton. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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)
}
Installer des dépendances
npm install --save @azure/identity
npm install --save mysql2
Obtenez un jeton d’accès en utilisant @azure/identity et les informations de base de données Azure MySQL à partir de variables d’environnement ajoutées par le service Service Connector. Lorsque vous utilisez le code ci-dessous, supprimez les marques de commentaire de la partie de l’extrait de code pour le type d’authentification que vous souhaitez utiliser.
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');
});
Pour les autres langages, utilisez la chaîne de connexion et le nom d’utilisateur définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Pour les autres langages, utilisez la chaîne de connexion et le nom d’utilisateur définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Pour les autres langages, utilisez les propriétés de connexion définis par le connecteur de services dans les variables d’environnement pour connecter la base de données. Pour plus d’informations sur les variables d’environnement, consultez l’article Intégrer Azure Database pour MySQL avec Service Connector.
Pour obtenir d’autres exemples de code, consultez la section Connexion à des bases de données Azure à partir d’App Service sans secrets à l’aide d’une identité managée.
Étapes suivantes
Suivez les documentations pour en savoir plus sur le connecteur de services.