Integrowanie usługi Azure Database for MySQL z łącznikiem usługi
Artykuł
Na tej stronie przedstawiono obsługiwane metody uwierzytelniania i klientów oraz pokazano przykładowy kod, za pomocą którego można połączyć usługę Azure Database for MySQL — serwer elastyczny z innymi usługami w chmurze przy użyciu łącznika usług. Na tej stronie są również wyświetlane domyślne nazwy zmiennych środowiskowych i wartości (lub konfiguracja platformy Spring Boot) podczas tworzenia połączenia z usługą.
Ważne
Pojedynczy serwer usługi Azure Database for MySQL znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do serwera elastycznego usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do serwera elastycznego usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MySQL — pojedynczy serwer?
Obsługiwane usługi obliczeniowe
Łącznik usługi może służyć do łączenia następujących usług obliczeniowych z usługą Azure Database for MySQL:
Azure App Service
Azure Container Apps
Azure Functions
Azure Kubernetes Service (AKS)
Azure Spring Apps
Obsługiwane typy uwierzytelniania i typy klientów
W poniższej tabeli pokazano, które kombinacje metod uwierzytelniania i klientów są obsługiwane do łączenia usługi obliczeniowej z usługą Azure Database for MySQL przy użyciu łącznika usługi Service Connector. Wartość "Tak" wskazuje, że kombinacja jest obsługiwana, a wartość "Nie" wskazuje, że nie jest obsługiwana.
Typ klienta
Tożsamość zarządzana przypisana przez system
Tożsamość zarządzana przypisana przez użytkownika
Wpis tajny/parametry połączenia
Jednostka usługi
.NET
Tak
Tak
Tak
Tak
Go (go-sql-driver for mysql)
Tak
Tak
Tak
Tak
Java (JDBC)
Tak
Tak
Tak
Tak
Java — Spring Boot (JDBC)
Tak
Tak
Tak
Tak
Node.js (mysql)
Tak
Tak
Tak
Tak
Python (mysql-connector-python)
Tak
Tak
Tak
Tak
Python-Django
Tak
Tak
Tak
Tak
PHP (MySQLi)
Tak
Tak
Tak
Tak
Ruby (mysql2)
Tak
Tak
Tak
Tak
None
Tak
Tak
Tak
Tak
Ta tabela wskazuje, że obsługiwane są wszystkie kombinacje typów klientów i metod uwierzytelniania w tabeli. Wszystkie typy klientów mogą używać dowolnej metody uwierzytelniania do nawiązywania połączenia z usługą Azure Database for MySQL przy użyciu łącznika usługi.
Uwaga
Tożsamość zarządzana przypisana przez system, tożsamość zarządzana przypisana przez użytkownika i jednostka usługi są obsługiwane tylko w interfejsie wiersza polecenia platformy Azure.
Domyślne nazwy zmiennych środowiskowych lub właściwości aplikacji i przykładowy kod
Zapoznaj się ze szczegółami połączenia i przykładowym kodem w poniższych tabelach, zgodnie z typem uwierzytelniania połączenia i typem klienta, aby połączyć usługi obliczeniowe z usługą Azure Database for MySQL. Aby uzyskać więcej informacji na temat konwencji nazewnictwa, zapoznaj się z artykułem Dotyczącym wewnętrznych łączników usług.
Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Database for MySQL przy użyciu tożsamości zarządzanej przypisanej przez system.
W przypadku platformy .NET nie ma wtyczki ani biblioteki do obsługi połączeń bez hasła. Token dostępu dla tożsamości zarządzanej lub jednostki usługi można uzyskać przy użyciu biblioteki klienta, takiej jak Azure.Identity. Następnie możesz użyć tokenu dostępu jako hasła, aby nawiązać połączenie z bazą danych. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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
W przypadku aplikacji Spring, jeśli utworzysz połączenie z opcją --client-type springboot, Łącznik usługi ustawia właściwości spring.datasource.azure.passwordless-enabled, spring.datasource.urli spring.datasource.username na azure Spring Apps.
Uwierzytelnianie za pomocą tokenu dostępu jest uzyskiwane za pośrednictwem azure-identity biblioteki i uzyskiwanie informacji o połączeniu ze zmiennej środowiskowej dodanej przez łącznik usługi. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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()
Instalowanie zależności.
pip install azure-identity
Uzyskiwanie tokenu dostępu za pośrednictwem biblioteki za pomocą azure-identity zmiennych środowiskowych dodanych przez łącznik usługi. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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')
W pliku ustawień pobierz informacje o bazie danych Azure MySQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Użyj accessToken metody uzyskanej w poprzednim kroku, aby uzyskać dostęp do bazy danych.
# 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
}
}
Instalowanie zależności.
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"
W kodzie uzyskaj token dostępu za pośrednictwem metody azidentity, a następnie połącz się z usługą Azure MySQL przy użyciu tokenu. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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)
}
Uzyskiwanie tokenu dostępu przy użyciu i @azure/identity informacji o bazie danych Azure MySQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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');
});
W przypadku innych języków użyj parametry połączenia i nazwy użytkownika, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.
W przypadku innych języków użyj parametry połączenia i nazwy użytkownika, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.
W przypadku innych języków użyj właściwości połączenia, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.
Zapoznaj się z poniższymi krokami i kodem, aby nawiązać połączenie z usługą Azure Database for MySQL przy użyciu tożsamości zarządzanej przypisanej przez użytkownika.
W przypadku platformy .NET nie ma wtyczki ani biblioteki do obsługi połączeń bez hasła. Token dostępu dla tożsamości zarządzanej lub jednostki usługi można uzyskać przy użyciu biblioteki klienta, takiej jak Azure.Identity. Następnie możesz użyć tokenu dostępu jako hasła, aby nawiązać połączenie z bazą danych. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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
W przypadku aplikacji Spring, jeśli utworzysz połączenie z opcją --client-type springboot, Łącznik usługi ustawia właściwości spring.datasource.azure.passwordless-enabled, spring.datasource.urli spring.datasource.username na azure Spring Apps.
Uwierzytelnianie za pomocą tokenu dostępu jest uzyskiwane za pośrednictwem azure-identity biblioteki i uzyskiwanie informacji o połączeniu ze zmiennej środowiskowej dodanej przez łącznik usługi. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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()
Instalowanie zależności.
pip install azure-identity
Uzyskiwanie tokenu dostępu za pośrednictwem biblioteki za pomocą azure-identity zmiennych środowiskowych dodanych przez łącznik usługi. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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')
W pliku ustawień pobierz informacje o bazie danych Azure MySQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Użyj accessToken metody uzyskanej w poprzednim kroku, aby uzyskać dostęp do bazy danych.
# 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
}
}
Instalowanie zależności.
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"
W kodzie uzyskaj token dostępu za pośrednictwem metody azidentity, a następnie połącz się z usługą Azure MySQL przy użyciu tokenu. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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)
}
Uzyskiwanie tokenu dostępu przy użyciu i @azure/identity informacji o bazie danych Azure MySQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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');
});
W przypadku innych języków użyj parametry połączenia i nazwy użytkownika, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.
W przypadku innych języków użyj parametry połączenia i nazwy użytkownika, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.
W przypadku innych języków użyj właściwości połączenia, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.
Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze wymaga bardzo wysokiego poziomu zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Tego przepływu należy używać tylko wtedy, gdy inne bezpieczniejsze przepływy, takie jak tożsamości zarządzane, nie są opłacalne.
Po utworzeniu springboot połączenia typu klienta usługa Łącznik usługi automatycznie doda właściwości spring.datasource.url, spring.datasource.username, spring.datasource.password. Dlatego aplikacja Spring Boot może automatycznie dodawać fasolę.
W kodzie pobierz parametry połączenia MySQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Aby nawiązać zaszyfrowane połączenie z serwerem MySQL za pośrednictwem protokołu SSL, zapoznaj się z tymi krokami.
using System;
using System.Data;
using MySql.Data.MySqlClient;
string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
}
W kodzie pobierz parametry połączenia MySQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Aby nawiązać zaszyfrowane połączenie z serwerem MySQL za pośrednictwem protokołu SSL, zapoznaj się z tymi krokami.
Skonfiguruj normalną aplikację Spring App, bardziej szczegółowo w tej sekcji. Aby nawiązać zaszyfrowane połączenie z serwerem MySQL za pośrednictwem protokołu SSL, zapoznaj się z tymi krokami.
W kodzie pobierz informacje o połączeniu programu MySQL ze zmiennych środowiskowych dodanych przez usługę łącznika usługi. Aby nawiązać zaszyfrowane połączenie z serwerem MySQL za pośrednictwem protokołu SSL, zapoznaj się z tymi krokami.
W pliku ustawień pobierz informacje o bazie danych MySQL ze zmiennych środowiskowych dodanych przez usługę Łącznik usługi. Aby nawiązać zaszyfrowane połączenie z serwerem MySQL za pośrednictwem protokołu SSL, zapoznaj się z tymi krokami.
W kodzie pobierz parametry połączenia MySQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Aby nawiązać zaszyfrowane połączenie z serwerem MySQL za pośrednictwem protokołu SSL, zapoznaj się z tymi krokami.
W kodzie pobierz informacje o połączeniu programu MySQL ze zmiennych środowiskowych dodanych przez usługę łącznika usługi. Aby nawiązać zaszyfrowane połączenie z serwerem MySQL za pośrednictwem protokołu SSL, zapoznaj się z tymi krokami.
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.');
});
W kodzie pobierz informacje o połączeniu programu MySQL ze zmiennych środowiskowych dodanych przez usługę łącznika usługi. Aby nawiązać zaszyfrowane połączenie z serwerem MySQL za pośrednictwem protokołu SSL, zapoznaj się z tymi krokami.
W kodzie pobierz informacje o połączeniu programu MySQL ze zmiennych środowiskowych dodanych przez usługę łącznika usługi. Aby nawiązać zaszyfrowane połączenie z serwerem MySQL za pośrednictwem protokołu SSL, zapoznaj się z tymi krokami.
W przypadku innych języków użyj właściwości połączenia, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.
W przypadku platformy .NET nie ma wtyczki ani biblioteki do obsługi połączeń bez hasła. Token dostępu dla tożsamości zarządzanej lub jednostki usługi można uzyskać przy użyciu biblioteki klienta, takiej jak Azure.Identity. Następnie możesz użyć tokenu dostępu jako hasła, aby nawiązać połączenie z bazą danych. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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
W przypadku aplikacji Spring, jeśli utworzysz połączenie z opcją --client-type springboot, Łącznik usługi ustawia właściwości spring.datasource.azure.passwordless-enabled, spring.datasource.urli spring.datasource.username na azure Spring Apps.
Uwierzytelnianie za pomocą tokenu dostępu jest uzyskiwane za pośrednictwem azure-identity biblioteki i uzyskiwanie informacji o połączeniu ze zmiennej środowiskowej dodanej przez łącznik usługi. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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()
Instalowanie zależności.
pip install azure-identity
Uzyskiwanie tokenu dostępu za pośrednictwem biblioteki za pomocą azure-identity zmiennych środowiskowych dodanych przez łącznik usługi. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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')
W pliku ustawień pobierz informacje o bazie danych Azure MySQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Użyj accessToken metody uzyskanej w poprzednim kroku, aby uzyskać dostęp do bazy danych.
# 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
}
}
Instalowanie zależności.
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"
W kodzie uzyskaj token dostępu za pośrednictwem metody azidentity, a następnie połącz się z usługą Azure MySQL przy użyciu tokenu. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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)
}
Uzyskiwanie tokenu dostępu przy użyciu i @azure/identity informacji o bazie danych Azure MySQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Korzystając z poniższego kodu, usuń komentarz z części fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
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');
});
W przypadku innych języków użyj parametry połączenia i nazwy użytkownika, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.
W przypadku innych języków użyj parametry połączenia i nazwy użytkownika, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.
W przypadku innych języków użyj właściwości połączenia, które łącznik usługi ustawia na zmienne środowiskowe, aby połączyć bazę danych. Aby uzyskać szczegółowe informacje o zmiennej środowiskowej, zobacz Integrowanie usługi Azure Database for MySQL z łącznikiem usługi.