Tento článek popisuje podporované metody ověřování, klienty a ukázkový kód, které můžete použít k připojení aplikací k flexibilnímu serveru Azure Database for MySQL pomocí konektoru služby. V tomto článku najdete také výchozí názvy proměnných prostředí, hodnoty a konfiguraci získané při vytváření připojení služeb.
Důležité
Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?
Podporované výpočetní služby
Konektor služby se dá použít k připojení následujících výpočetních služeb ke službě Azure Database for MySQL:
- Azure App Service
- Azure Container Apps
- Azure Functions
- Azure Kubernetes Service (AKS)
- Azure Spring Apps
Podporované typy ověřování a typy klientů
Následující tabulka ukazuje, které kombinace metod ověřování a klientů se podporují pro připojení výpočetních služeb ke službě Azure Database for MySQL pomocí konektoru služby. "Ano" označuje, že kombinace je podporována, zatímco "Ne" označuje, že není podporována.
Typ klienta |
Spravovaná identita přiřazená systémem |
Spravovaná identita přiřazená uživatelem |
Tajný kód/připojovací řetězec |
Principál služby |
.NET |
Ano |
Ano |
Ano |
Ano |
Go (go-sql-driver for mysql) |
Ano |
Ano |
Ano |
Ano |
Java (JDBC) |
Ano |
Ano |
Ano |
Ano |
Java – Spring Boot (JDBC) |
Ano |
Ano |
Ano |
Ano |
Node.js (mysql) |
Ano |
Ano |
Ano |
Ano |
Python (mysql-connector-python) |
Ano |
Ano |
Ano |
Ano |
Python-Django |
Ano |
Ano |
Ano |
Ano |
PHP (MySQLi) |
Ano |
Ano |
Ano |
Ano |
Ruby (mysql2) |
Ano |
Ano |
Ano |
Ano |
Nic |
Ano |
Ano |
Ano |
Ano |
Poznámka:
Spravovaná identita přiřazená systémem, spravovaná identita přiřazená uživatelem a ověřování pomocí principálu služby jsou podporovány pouze v Azure CLI.
Výchozí názvy proměnných prostředí nebo vlastnosti aplikace a ukázkový kód
Viz podrobnosti připojení a ukázkový kód v následujících tabulkách podle typu ověřování a klienta, abyste mohli připojit výpočetní služby k Azure Database for MySQL. Další informace o pojmenovávacích konvencích najdete v článku 'Service Connector internals'.
Spravovaná identita přiřazená systémem
Výchozí název proměnných prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET MySQL připojovací řetězec |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CONNECTIONSTRING |
Připojovací řetězec JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
Vlastnosti aplikace |
Popis |
Příklad hodnoty |
spring.datasource.azure.passwordless-enabled |
Povolení ověřování bez hesla |
true |
spring.datasource.url |
Adresa URL databáze Spring Boot JDBC |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Uživatelské jméno databáze |
<MySQL-DB-username> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_NAME |
Název databáze |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_NAME |
Název databáze |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CONNECTIONSTRING |
Připojovací řetězec pro ovladač Go-sql |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Název databáze |
<database-name> |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_SSL |
Možnost SSL |
true |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_DBNAME |
Název databáze |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_FLAG |
SSL nebo jiné příznaky |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
<MySQL-DB-username> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_DATABASE |
Název databáze |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Možnost SSL |
required |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Název databáze |
<database-name> |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_SSL |
Možnost SSL |
true |
Ukázkový kód
Projděte si následující kroky a kód a připojte se ke službě Azure Database for MySQL pomocí spravované identity přiřazené systémem.
Pro .NET neexistuje modul plug-in ani knihovna, které podporují připojení bez hesla. Přístupový token pro spravovanou identitu nebo instanční objekt můžete získat pomocí klientské knihovny, jako je Azure.Identity. Přístupový token pak můžete použít jako heslo pro připojení k databázi. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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
Do souboru pom.xml přidejte následující závislosti:
<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>
Získejte připojovací řetězec ze systémové proměnné a přidejte název pluginu pro připojení k databázi.
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);
Další informace najdete v tématu Použití Javy a JDBC s flexibilním serverem Azure Database for MySQL.
Nainstalujte závislosti
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Ověřte se pomocí přístupového tokenu získaného prostřednictvím azure-identity
knihovny a získejte informace o připojení z proměnné prostředí přidané Service Connector. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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()
Nainstalujte závislosti.
pip install azure-identity
Získejte přístupový token s použitím knihovny azure-identity
a proměnných prostředí přidaných konektorem služby Service Connector. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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')
V souboru nastavení získejte informace o databázi Azure MySQL z proměnných prostředí přidaných službou Service Connector. Pro přístup k databázi použijte accessToken
získané v předchozím kroku.
# 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
}
}
Nainstalujte závislosti.
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"
V kódu získejte přístupový token prostřednictvím azidentity
a pak se pomocí tokenu připojte k Azure MySQL. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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)
}
Nainstalujte závislosti
npm install --save @azure/identity
npm install --save mysql2
Získejte přístupový token pomocí @azure/identity
a informací o databázi Azure MySQL, z proměnných prostředí přidaných službou Service Connector. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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');
});
Další ukázky kódu najdete v tématu Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity.
Spravovaná identita přiřazená uživatelem
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CLIENTID |
ID klienta |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET MySQL připojovací řetězec |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CLIENTID |
ID klienta |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Připojovací řetězec JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
Vlastnosti aplikace |
Popis |
Příklad hodnoty |
spring.datasource.azure.passwordless-enabled |
Povolení ověřování bez hesla |
true |
spring.cloud.azure.credential.client-id |
ID klienta |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
Povolte klientem spravovanou identitu |
true |
spring.datasource.url |
Adresa URL databáze |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Uživatelské jméno databáze |
username |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_NAME |
Název databáze |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
ID klienta |
identity-client-ID |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_NAME |
Název databáze |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
ID klienta |
<identity-client-ID> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CLIENTID |
ID klienta |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Připojovací řetězec ovladače Go-sql |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Název databáze |
<database-name> |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_SSL |
Možnost SSL |
true |
AZURE_MYSQL_CLIENTID |
ID klienta |
<identity-client-ID> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_DBNAME |
Název databáze |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_FLAG |
SSL nebo jiné příznaky |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
ID klienta |
<identity-client-ID> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_DATABASE |
Název databáze |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Možnost SSL |
required |
AZURE_MYSQL_CLIENTID |
ID klienta |
<identity-client-ID> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Název databáze |
<database-name> |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_SSL |
Možnost SSL |
true |
AZURE_MYSQL_CLIENTID |
ID klienta |
<identity-client-ID> |
Ukázkový kód
Pokud se chcete připojit ke službě Azure Database for MySQL pomocí spravované identity přiřazené uživatelem, projděte si následující postup a kód.
Pro .NET neexistuje modul plug-in ani knihovna, které podporují připojení bez hesla. Přístupový token pro spravovanou identitu nebo instanční objekt můžete získat pomocí klientské knihovny, jako je Azure.Identity. Přístupový token pak můžete použít jako heslo pro připojení k databázi. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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
Do souboru pom.xml přidejte následující závislosti:
<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>
Získejte připojovací řetězec z proměnné prostředí a přidejte název pluginu pro připojení k databázi.
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);
Další informace najdete v tématu Použití Javy a JDBC s flexibilním serverem Azure Database for MySQL.
Instalace závislostí
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Ověřte se pomocí přístupového tokenu získaného prostřednictvím azure-identity
knihovny a získejte informace o připojení z proměnné prostředí přidané konektorem služby. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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()
Nainstalujte závislosti.
pip install azure-identity
Získejte přístupový token pomocí knihovny azure-identity
s proměnnými prostředí přidanými službou Service Connector. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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')
V souboru nastavení získejte informace o databázi Azure MySQL z proměnných prostředí přidaných službou Service Connector. Pro přístup k databázi použijte accessToken
získané v předchozím kroku.
# 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
}
}
Nainstalujte závislosti.
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"
V kódu získejte přístupový token prostřednictvím azidentity
a pak se pomocí tokenu připojte k Azure MySQL. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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)
}
Nainstalovat závislosti
npm install --save @azure/identity
npm install --save mysql2
Získejte přístupový token pomocí @azure/identity
a informací o databázi Azure MySQL z proměnných prostředí, které přidala služba Service Connector. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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');
});
Další ukázky kódu najdete v tématu Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity.
Připojovací řetězec
Varování
Microsoft doporučuje používat nejbezpečnější dostupný tok ověřování. Ověřovací tok popsaný v tomto postupu vyžaduje velmi vysoký stupeň důvěryhodnosti v aplikaci a nese rizika, která nejsou přítomna v jiných tocích. Tento tok byste měli použít jenom v případě, že jiné bezpečnější toky, jako jsou spravované identity, nejsou přijatelné.
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET MySQL připojovací řetězec |
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 |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CONNECTIONSTRING |
Připojovací řetězec 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>) |
Vlastnosti aplikace |
Popis |
Příklad hodnoty |
spring.datasource.url |
Adresa URL databáze Spring Boot JDBC |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Uživatelské jméno databáze |
<MySQL-DB-username> |
spring.datasource.password |
Heslo databáze |
MySQL-DB-password |
Po vytvoření springboot
připojení typu klienta služba Service Connector automaticky přidá vlastnosti spring.datasource.url
, spring.datasource.username
, . spring.datasource.password
Aplikace Spring Boot by tedy mohla přidávat boby automaticky.
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_NAME |
Název databáze |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Heslo databáze |
MySQL-DB-password |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_NAME |
Název databáze |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Heslo databáze |
MySQL-DB-password |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CONNECTIONSTRING |
Připojovací řetězec ovladače Go-sql |
<MySQL-DB-username>:<MySQL-DB-password>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Heslo databáze |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Název databáze |
<database-name> |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_SSL |
Možnost SSL |
true |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_DBNAME |
Název databáze |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_FLAG |
SSL nebo jiné příznaky |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
<MySQL-DB-username> |
AZURE_MYSQL_PASSWORD |
Heslo databáze |
<MySQL-DB-password> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_DATABASE |
Název databáze |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Heslo databáze |
<MySQL-DB-password> |
AZURE_MYSQL_SSLMODE |
Možnost SSL |
required |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Heslo databáze |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Název databáze |
<database-name> |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_SSL |
Možnost SSL |
true |
Ukázkový kód
Pro informace o tom, jak se připojit ke službě Azure Database for MySQL pomocí připojovacího řetězce, se podívejte na následující kroky a kód.
- Nainstalujte závislosti. Postupujte podle pokynů k instalaci konektoru nebo NET MySQL.
- V kódu získejte připojovací řetězec MySQL z proměnných prostředí přidaných službou Service Connector. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
using System;
using System.Data;
using MySql.Data.MySqlClient;
string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
}
- Nainstalujte závislosti. Postupujte podle pokynů k instalaci konektoru nebo J.
- V kódu získejte připojovací řetězec MySQL z proměnných prostředí přidaných službou Service Connector. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
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();
}
- Nainstalujte závislosti. Do souboru přidejte následující závislosti
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>
- Nastavte normální aplikaci Spring App, podrobnější informace v této části. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
- Nainstalujte závislosti. Postupujte podle pokynů k instalaci konektoru nebo Pythonu.
- V kódu získejte informace o připojení MySQL z proměnných prostředí, které přidala služba Service Connector. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
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()
- Nainstalujte závislosti.
pip install django
- V souboru nastavení získejte informace o databázi MySQL z proměnných prostředí přidaných službou Service Connector. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
# 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
}
}
- Nainstalujte závislosti.
go get -u github.com/go-sql-driver/mysql
- V kódu získejte připojovací řetězec MySQL z proměnných prostředí přidaných službou Service Connector. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
)
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING")
db, err := sql.Open("mysql", connectionString)
- Nainstalujte závislosti.
npm install mysql2
- V kódu získejte informace o připojení MySQL z proměnných prostředí přidaných službou Service Connector. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
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.');
});
- Nainstalujte závislosti. Postupujte podle pokynů k instalaci MySQLi.
- V kódu získejte informace o připojení MySQL z proměnných prostředí, které přidala služba Service Connector. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
<?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);
?>
- Nainstalujte závislosti.
gem install mysql2
- V kódu získejte informace o připojení MySQL z proměnných prostředí, které přidala služba Service Connector. Pokud chcete vytvořit šifrované připojení k serveru MySQL přes PROTOKOL SSL, projděte si tyto kroky.
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
aplikační objekt služby
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CLIENTID |
ID klienta |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Tajná informace klienta |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID vašeho tenanta |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET MySQL připojovací řetězec |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CLIENTID |
ID klienta |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Tajný klíč klienta |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID vašeho tenanta |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Připojovací řetězec JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
Vlastnosti aplikace |
Popis |
Příklad hodnoty |
spring.datasource.azure.passwordless-enabled |
Povolení ověřování bez hesla |
true |
spring.cloud.azure.credential.client-id |
ID klienta |
<client-ID> |
spring.cloud.azure.credential.client-secret |
Tajný údaj klienta |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
ID vašeho tenanta |
<tenant-ID> |
spring.datasource.url |
Adresa URL databáze |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Uživatelské jméno databáze |
username |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_NAME |
Název databáze |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
ID klienta |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Vaše tajné heslo klienta |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID vašeho tenanta |
<tenant-ID> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_NAME |
Název databáze |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
ID klienta |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Tajemství klienta |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID vašeho tenanta |
<tenant-ID> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_CLIENTID |
ID klienta |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Tajemství klienta |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID vašeho tenanta |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Připojovací řetězec ovladače Go-sql |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Uživatelské jméno databáze |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Název databáze |
<database-name> |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_SSL |
Možnost SSL |
true |
AZURE_MYSQL_CLIENTID |
ID klienta |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Utajovaný klíč klienta |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID vašeho tenanta |
<tenant-ID> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_DBNAME |
Název databáze |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_FLAG |
SSL nebo jiné příznaky |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
ID klienta |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Tajný klíč klienta |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID vašeho tenanta |
<tenant-ID> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_DATABASE |
Název databáze |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Možnost SSL |
required |
AZURE_MYSQL_CLIENTID |
ID klienta |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Heslo klienta |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID vašeho tenanta |
<tenant-ID> |
Výchozí název proměnné prostředí |
Popis |
Příklad hodnoty |
AZURE_MYSQL_HOST |
Adresa URL hostitele databáze |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Uživatelské jméno databáze |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Název databáze |
<database-name> |
AZURE_MYSQL_PORT |
Číslo portu |
3306 |
AZURE_MYSQL_SSL |
Možnost SSL |
true |
AZURE_MYSQL_CLIENTID |
ID klienta |
<identity-client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Tajný klíč klienta |
<client-secret> |
AZURE_MYSQL_TENANTID |
ID vašeho tenanta |
<tenant-ID> |
Ukázkový kód
Informace o připojení ke službě Azure Database for MySQL pomocí instančního objektu najdete v následujících krocích a kódu.
Pro .NET neexistuje modul plug-in ani knihovna, které podporují připojení bez hesla. Přístupový token pro spravovanou identitu nebo instanční objekt můžete získat pomocí klientské knihovny, jako je Azure.Identity. Přístupový token pak můžete použít jako heslo pro připojení k databázi. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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
Do souboru pom.xml přidejte následující závislosti:
<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>
Získejte připojovací řetězec z prostřední proměnné a přidejte název pluginu pro připojení k databázi.
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);
Další informace najdete v tématu Použití Javy a JDBC s flexibilním serverem Azure Database for MySQL.
Nainstalujte závislosti
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Ověřte se pomocí přístupového tokenu získaného prostřednictvím azure-identity
knihovny a získejte informace o připojení z proměnné prostředí přidané konektorem služby. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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()
Nainstalujte závislosti.
pip install azure-identity
Získejte přístupový token pomocí knihovny azure-identity
s proměnnými prostředí přidanými konektorem služby. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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')
V souboru nastavení získejte informace o databázi Azure MySQL z proměnných prostředí přidaných službou Service Connector. Pro přístup k databázi použijte accessToken
získané v předchozím kroku.
# 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
}
}
Nainstalujte závislosti.
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"
V kódu získejte přístupový token prostřednictvím azidentity
a pak se pomocí tokenu připojte k Azure MySQL. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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)
}
Nainstalujte závislosti
npm install --save @azure/identity
npm install --save mysql2
Získejte přístupový token pomocí informací o databázi Azure MySQL z proměnných prostředí, které přidala služba Service Connector. Při použití následujícího kódu odkomentujte část fragmentu kódu pro typ ověřování, který chcete použít.
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');
});
Další ukázky kódu najdete v tématu Připojení k databázím Azure ze služby App Service bez tajných kódů pomocí spravované identity.
Další kroky
Další informace o konektoru Service Connector najdete v dokumentaci.