Questo articolo illustra i metodi di autenticazione supportati, i client e il codice di esempio che è possibile usare per connettere le app a Database di Azure per MySQL - Server flessibile tramite Service Connector. In questo articolo sono disponibili anche nomi, valori e configurazione predefiniti delle variabili di ambiente ottenuti durante la creazione di connessioni al servizio.
Importante
Il server singolo del Database di Azure per MySQL è in fase di ritiro. È consigliabile eseguire l'aggiornamento al server flessibile del Database di Azure per MySQL. Per altre informazioni sulla migrazione a Database di Azure per MySQL - Server flessibile, vedere Cosa succede a Database di Azure per MySQL - Server singolo?
Servizi di calcolo supportati
Service Connector può essere usato per connettere i servizi di calcolo seguenti a Database di Azure per MySQL:
- Servizio app di Azure
- Funzioni di Azure
- Servizio Azure Kubernetes (AKS)
- Azure Spring Apps
Tipi di autenticazione e tipi di client supportati
La tabella seguente illustra le combinazioni di metodi di autenticazione e client supportati per la connessione dei servizi di calcolo a Database di Azure per MySQL tramite Service Connector. Un valore "Sì" indica che la combinazione è supportata, mentre "No" indica che non è supportata.
| Tipo client |
Identità gestita assegnata dal sistema |
Identità gestita assegnata dall'utente |
Stringa segreta/di connessione |
Entità servizio |
| .NET |
Sì |
Sì |
Sì |
Sì |
| Go (go-sql-driver per MySQL) |
Sì |
Sì |
Sì |
Sì |
| Java (JDBC) |
Sì |
Sì |
Sì |
Sì |
| Java - Spring Boot (JDBC) |
Sì |
Sì |
Sì |
Sì |
| Node.js (mysql) |
Sì |
Sì |
Sì |
Sì |
| Python (mysql-connector-python) |
Sì |
Sì |
Sì |
Sì |
| Python-Django |
Sì |
Sì |
Sì |
Sì |
| PHP (MySQLi) |
Sì |
Sì |
Sì |
Sì |
| Ruby (mysql2) |
Sì |
Sì |
Sì |
Sì |
| Nessuno |
Sì |
Sì |
Sì |
Sì |
Nota
L'identità gestita assegnata dal sistema, l'identità gestita assegnata dall'utente e l'autenticazione dell'entità servizio sono supportate solo nell'interfaccia della riga di comando di Azure.
Nomi di variabili di ambiente predefiniti o proprietà dell'applicazione e codice di esempio
Fare riferimento ai dettagli della connessione e al codice di esempio nelle tabelle seguenti, in base al tipo di autenticazione e al tipo di client della connessione, per connettere i servizi di calcolo a Database di Azure per MySQL. Per altre informazioni sulle convenzioni di denominazione, vedere Elementi interni di Service Connector.
Identità gestita assegnata dal sistema
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Proprietà dell'applicazione |
Descrizione |
Valore di esempio |
spring.datasource.azure.passwordless-enabled |
Abilitare l'autenticazione senza password |
true |
spring.datasource.url |
URL del database di Spring Boot JDBC |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nome utente del database |
<MySQL-DB-username> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_NAME |
Nome del database |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_NAME |
Nome del database |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome del database |
<database-name> |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_SSL |
Opzione SSL |
true |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_DBNAME |
Nome del database |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_FLAG |
SSL o altri flag |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome utente del database |
<MySQL-DB-username> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_DATABASE |
Nome del database |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Opzione SSL |
required |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome utente del database |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome del database |
<database-name> |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_SSL |
Opzione SSL |
true |
Codice di esempio
Fare riferimento ai passaggi e al codice seguenti per connettersi a Database di Azure per MySQL usando un'identità gestita assegnata dal sistema.
Per .NET non è disponibile un plug-in o una libreria per supportare connessioni senza password. È possibile ottenere un token di accesso per l'identità gestita o l'entità servizio tramite una libreria client come Azure.Identity. È quindi possibile usare il token di accesso come password per connettersi al database. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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
Aggiungere le dipendenze seguenti nel file 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>
Ottenere la stringa di connessione dalla variabile di ambiente e aggiungere il nome del plug-in per connettersi al database:
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);
Per altre informazioni, vedere Usare Java e JDBC con il server flessibile di Database di Azure per MySQL.
Installare le dipendenze
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Eseguire l'autenticazione con il token di accesso tramite la libreria azure-identity e ottenere informazioni di connessione dalla variabile di ambiente aggiunta da Service Connector. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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()
Installare le dipendenze.
pip install azure-identity
Ottenere il token di accesso tramite la libreria azure-identity con le variabili di ambiente aggiunte da Service Connector. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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')
Nel file di impostazione ottenere informazioni sul database MySQL di Azure dalle variabili di ambiente aggiunte dal servizio Service Connector. Usare accessToken acquisito nel passaggio precedente per accedere al database.
# 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
}
}
Installare le dipendenze.
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"
Nel codice ottenere il token di accesso tramite azidentity, quindi connettersi ad Azure MySQL con il token. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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)
}
Installare le dipendenze
npm install --save @azure/identity
npm install --save mysql2
Ottenere il token di accesso usando @azure/identity e le informazioni sul database MySQL di Azure dalle variabili di ambiente aggiunte dal servizio Service Connector. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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');
});
Per altri esempi di codice, vedere Connettersi ai database di Azure dal servizio app senza segreti usando un'identità gestita.
Identità gestita assegnata dall'utente
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Proprietà dell'applicazione |
Descrizione |
Valore di esempio |
spring.datasource.azure.passwordless-enabled |
Abilitare l'autenticazione senza password |
true |
spring.cloud.azure.credential.client-id |
L’ID del cliente |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
Abilitare l'identità gestita del client |
true |
spring.datasource.url |
URL del database |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nome utente del database |
username |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_NAME |
Nome del database |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
identity-client-ID |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_NAME |
Nome del database |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<identity-client-ID> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome del database |
<database-name> |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_SSL |
Opzione SSL |
true |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<identity-client-ID> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_DBNAME |
Nome del database |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_FLAG |
SSL o altri flag |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<identity-client-ID> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_DATABASE |
Nome del database |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Opzione SSL |
required |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<identity-client-ID> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome utente del database |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome del database |
<database-name> |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_SSL |
Opzione SSL |
true |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<identity-client-ID> |
Codice di esempio
Fare riferimento ai passaggi e al codice seguenti per connettersi a Database di Azure per MySQL usando un'identità gestita assegnata dall'utente.
Per .NET non è disponibile un plug-in o una libreria per supportare connessioni senza password. È possibile ottenere un token di accesso per l'identità gestita o l'entità servizio tramite una libreria client come Azure.Identity. È quindi possibile usare il token di accesso come password per connettersi al database. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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
Aggiungere le dipendenze seguenti nel file 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>
Ottenere la stringa di connessione dalla variabile di ambiente e aggiungere il nome del plug-in per connettersi al database:
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);
Per altre informazioni, vedere Usare Java e JDBC con il server flessibile di Database di Azure per MySQL.
Installare le dipendenze
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Eseguire l'autenticazione con il token di accesso tramite la libreria azure-identity e ottenere informazioni di connessione dalla variabile di ambiente aggiunta da Service Connector. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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()
Installare le dipendenze.
pip install azure-identity
Ottenere il token di accesso tramite la libreria azure-identity con le variabili di ambiente aggiunte da Service Connector. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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')
Nel file di impostazione ottenere informazioni sul database MySQL di Azure dalle variabili di ambiente aggiunte dal servizio Service Connector. Usare accessToken acquisito nel passaggio precedente per accedere al database.
# 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
}
}
Installare le dipendenze.
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"
Nel codice ottenere il token di accesso tramite azidentity, quindi connettersi ad Azure MySQL con il token. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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)
}
Installare le dipendenze
npm install --save @azure/identity
npm install --save mysql2
Ottenere il token di accesso usando @azure/identity e le informazioni sul database MySQL di Azure dalle variabili di ambiente aggiunte dal servizio Service Connector. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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');
});
Per altri esempi di codice, vedere Connettersi ai database di Azure dal servizio app senza segreti usando un'identità gestita.
Stringa di connessione
Avviso
Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Il flusso di autenticazione descritto in questa procedura richiede un livello di attendibilità molto elevato nell'applicazione e comporta rischi che non sono presenti in altri flussi. Si consiglia di usare questo flusso solo quando altri flussi più sicuri, come le identità gestite, non sono validi.
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione 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 |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione 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>) |
| Proprietà dell'applicazione |
Descrizione |
Valore di esempio |
spring.datasource.url |
URL del database di Spring Boot JDBC |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nome utente del database |
<MySQL-DB-username> |
spring.datasource.password |
Password del database |
MySQL-DB-password |
Dopo aver creato una connessione al tipo di client springboot, il servizio Service Connector aggiungerà automaticamente proprietà spring.datasource.url, spring.datasource.username, spring.datasource.password. L'applicazione Spring Boot potrebbe quindi aggiungere automaticamente fagioli.
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_NAME |
Nome del database |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Password del database |
MySQL-DB-password |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_NAME |
Nome del database |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Password del database |
MySQL-DB-password |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione Go-sql-driver |
<MySQL-DB-username>:<MySQL-DB-password>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Password del database |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Nome del database |
<database-name> |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_SSL |
Opzione SSL |
true |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_DBNAME |
Nome del database |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_FLAG |
SSL o altri flag |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome utente del database |
<MySQL-DB-username> |
AZURE_MYSQL_PASSWORD |
Password del database |
<MySQL-DB-password> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_DATABASE |
Nome del database |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Password del database |
<MySQL-DB-password> |
AZURE_MYSQL_SSLMODE |
Opzione SSL |
required |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome utente del database |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Password del database |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Nome del database |
<database-name> |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_SSL |
Opzione SSL |
true |
Codice di esempio
Per connettersi a Database di Azure per MySQL usando una stringa di connessione, vedere i passaggi e il codice seguenti.
- Installare le dipendenze. Seguire le indicazioni per installare il connettore/NET MySQL
- Nel codice ottenere la stringa di connessione MySQL dalle variabili di ambiente aggiunte dal servizio Service Connector. Per stabilire una connessione crittografata al server MySQL tramite SSL, vedere questi passaggi.
using System;
using System.Data;
using MySql.Data.MySqlClient;
string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
}
- Installare le dipendenze. Seguire le indicazioni per installare Connector/J.
- Nel codice ottenere la stringa di connessione MySQL dalle variabili di ambiente aggiunte dal servizio Service Connector. Per stabilire una connessione crittografata al server MySQL tramite SSL, vedere questi passaggi.
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();
}
- Installare le dipendenze. Aggiungere le dipendenze seguenti al file
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>
- Configurare la normale applicazione Spring App, più dettagliata in questa sezione. Per stabilire una connessione crittografata al server MySQL tramite SSL, vedere questi passaggi.
- Installare le dipendenze. Seguire le indicazioni per installare Connector/Python.
- Nel codice ottenere le informazioni di connessione mySQL dalle variabili di ambiente aggiunte dal servizio Service Connector. Per stabilire una connessione crittografata al server MySQL tramite SSL, vedere questi passaggi.
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()
- Installare le dipendenze.
pip install django
- Nel file di impostazione ottenere informazioni sul database MySQL dalle variabili di ambiente aggiunte dal servizio Service Connector. Per stabilire una connessione crittografata al server MySQL tramite SSL, vedere questi passaggi.
# 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
}
}
- Installare le dipendenze.
go get -u github.com/go-sql-driver/mysql
- Nel codice ottenere la stringa di connessione MySQL dalle variabili di ambiente aggiunte dal servizio Service Connector. Per stabilire una connessione crittografata al server MySQL tramite SSL, vedere questi passaggi.
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
)
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING")
db, err := sql.Open("mysql", connectionString)
- Installare le dipendenze.
npm install mysql2
- Nel codice ottenere le informazioni di connessione mySQL dalle variabili di ambiente aggiunte dal servizio Service Connector. Per stabilire una connessione crittografata al server MySQL tramite SSL, vedere questi passaggi.
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.');
});
- Installare le dipendenze. Seguire la guida per installare MySQLi.
- Nel codice ottenere le informazioni di connessione mySQL dalle variabili di ambiente aggiunte dal servizio Service Connector. Per stabilire una connessione crittografata al server MySQL tramite SSL, vedere questi passaggi.
<?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);
?>
- Installare le dipendenze.
gem install mysql2
- Nel codice ottenere le informazioni di connessione mySQL dalle variabili di ambiente aggiunte dal servizio Service Connector. Per stabilire una connessione crittografata al server MySQL tramite SSL, vedere questi passaggi.
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
Entità servizio
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Il segreto del client |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID del tenant. |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Il segreto del client |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID del tenant. |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Proprietà dell'applicazione |
Descrizione |
Valore di esempio |
spring.datasource.azure.passwordless-enabled |
Abilitare l'autenticazione senza password |
true |
spring.cloud.azure.credential.client-id |
L’ID del cliente |
<client-ID> |
spring.cloud.azure.credential.client-secret |
Il segreto del client |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
ID del tenant. |
<tenant-ID> |
spring.datasource.url |
URL del database |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nome utente del database |
username |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_NAME |
Nome del database |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Il segreto del client |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID del tenant. |
<tenant-ID> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_NAME |
Nome del database |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Il segreto del client |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID del tenant. |
<tenant-ID> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Il segreto del client |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID del tenant. |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Stringa di connessione Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome utente del database |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome del database |
<database-name> |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_SSL |
Opzione SSL |
true |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Il segreto del client |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID del tenant. |
<tenant-ID> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_DBNAME |
Nome del database |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_FLAG |
SSL o altri flag |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Il segreto del client |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID del tenant. |
<tenant-ID> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_DATABASE |
Nome del database |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome utente del database |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Opzione SSL |
required |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Il segreto del client |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID del tenant. |
<tenant-ID> |
| Nome variabile di ambiente predefinito |
Descrizione |
Valore di esempio |
AZURE_MYSQL_HOST |
URL dell'host del database |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome utente del database |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome del database |
<database-name> |
AZURE_MYSQL_PORT |
Numero di porta |
3306 |
AZURE_MYSQL_SSL |
Opzione SSL |
true |
AZURE_MYSQL_CLIENTID |
L’ID del cliente |
<identity-client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Il segreto del client |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID del tenant. |
<tenant-ID> |
Codice di esempio
Per connettersi ad Database di Azure per MySQL usando un service principal, fare riferimento ai passaggi e al codice seguenti.
Per .NET non è disponibile un plug-in o una libreria per supportare connessioni senza password. È possibile ottenere un token di accesso per l'identità gestita o l'entità servizio tramite una libreria client come Azure.Identity. È quindi possibile usare il token di accesso come password per connettersi al database. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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
Aggiungere le dipendenze seguenti nel file 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>
Ottenere la stringa di connessione dalla variabile di ambiente e aggiungere il nome del plug-in per connettersi al database:
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);
Per altre informazioni, vedere Usare Java e JDBC con il server flessibile di Database di Azure per MySQL.
Installare le dipendenze
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Eseguire l'autenticazione con il token di accesso tramite la libreria azure-identity e ottenere informazioni di connessione dalla variabile di ambiente aggiunta da Service Connector. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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()
Installare le dipendenze.
pip install azure-identity
Ottenere il token di accesso tramite la libreria azure-identity con le variabili di ambiente aggiunte da Service Connector. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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')
Nel file di impostazione ottenere informazioni sul database MySQL di Azure dalle variabili di ambiente aggiunte dal servizio Service Connector. Usare accessToken acquisito nel passaggio precedente per accedere al database.
# 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
}
}
Installare le dipendenze.
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"
Nel codice ottenere il token di accesso tramite azidentity, quindi connettersi ad Azure MySQL con il token. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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)
}
Installare le dipendenze
npm install --save @azure/identity
npm install --save mysql2
Ottenere il token di accesso usando @azure/identity e le informazioni sul database MySQL di Azure dalle variabili di ambiente aggiunte dal servizio Service Connector. Quando utilizzi il codice seguente, decommenta la parte del frammento di codice relativa al tipo di autenticazione che desideri utilizzare.
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');
});
Per altri esempi di codice, vedere Connettersi ai database di Azure dal servizio app senza segreti usando un'identità gestita.
Passaggi successivi
Seguire le documentazioni per altre informazioni su Service Connector.