Este artigo aborda métodos de autenticação suportados, clientes e código de exemplo que você pode usar para conectar seus aplicativos ao Banco de Dados do Azure para MySQL - Servidor Flexível usando o Service Connector. Neste artigo, você também encontrará nomes, valores e configurações de variáveis de ambiente padrão obtidos ao criar conexões de serviço.
Serviços de computação suportados
O Service Connector pode ser usado para conectar os seguintes serviços de computação ao Banco de Dados do Azure para MySQL:
- Serviço de Aplicações do Azure
- Azure Container Apps
- Funções do Azure
- Azure Kubernetes Service (AKS)
- Azure Spring Apps
Tipos de autenticação e tipos de cliente suportados
A tabela abaixo mostra quais combinações de métodos de autenticação e clientes têm suporte para conectar seus serviços de computação ao Banco de Dados do Azure para MySQL usando o Service Connector. Um "Sim" indica que a combinação é suportada, enquanto um "Não" indica que ela não é suportada.
| Tipo de cliente |
Identidade gerida atribuída pelo sistema |
Identidade gerida atribuída pelo utilizador |
Segredo/cadeia de conexão |
Principal de serviço |
| .NET |
Sim |
Sim |
Sim |
Sim |
| Go (go-sql-driver para uso com mysql) |
Sim |
Sim |
Sim |
Sim |
| Java (JDBC) |
Sim |
Sim |
Sim |
Sim |
| Java - Spring Boot (JDBC) |
Sim |
Sim |
Sim |
Sim |
| Node.js (mysql) |
Sim |
Sim |
Sim |
Sim |
| Python (mysql-connector-python) |
Sim |
Sim |
Sim |
Sim |
| Python-Django |
Sim |
Sim |
Sim |
Sim |
| PHP (MySQLi) |
Sim |
Sim |
Sim |
Sim |
| Rubi (mysql2) |
Sim |
Sim |
Sim |
Sim |
| Nenhuma |
Sim |
Sim |
Sim |
Sim |
Nota
A identidade gerenciada atribuída pelo sistema, a identidade gerenciada atribuída pelo usuário e a autenticação da entidade de serviço só são suportadas na CLI do Azure.
Nomes de variáveis de ambiente padrão ou propriedades de aplicativo e código de exemplo
Consulte os detalhes da conexão e o código de exemplo nas tabelas a seguir, de acordo com o tipo de autenticação e o tipo de cliente da sua conexão, para conectar serviços de computação ao Banco de Dados do Azure para MySQL. Para obter mais informações sobre convenções de nomenclatura, consulte o artigo interno do Service Connector.
Identidade gerida atribuída automaticamente pelo sistema
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET Cadeia de conexão MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Propriedades da aplicação |
Descrição |
Valor de exemplo |
spring.datasource.azure.passwordless-enabled |
Habilite a autenticação sem senha |
true |
spring.datasource.url |
URL do banco de dados JDBC do Spring Boot |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nome de usuário do banco de dados |
<MySQL-DB-username> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome da base de dados |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
| Nome da variável de ambiente padrão |
Descrição |
Um valor de exemplo |
AZURE_MYSQL_NAME |
Nome da base de dados |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DBNAME |
Nome da base de dados |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_FLAG |
SSL ou outras bandeiras |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Opção SSL |
required |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
Código de exemplo
Consulte as etapas e o código abaixo para se conectar ao Banco de Dados do Azure para MySQL usando uma identidade gerenciada atribuída ao sistema.
Para o .NET, não há um plug-in ou biblioteca para suportar conexões sem senha. Você pode obter um token de acesso para a identidade gerida ou para o principal de serviço usando uma biblioteca cliente como Azure.Identity. Em seguida, você pode usar o token de acesso como senha para se conectar ao banco de dados. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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
Adicione as seguintes dependências no arquivo 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>
Obtenha a cadeia de conexão da variável de ambiente e adicione o nome do plug-in para se conectar ao banco de dados:
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);
Para obter mais informações, consulte Usar Java e JDBC com o Banco de Dados do Azure para MySQL - Servidor flexível.
Instalar dependências
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Autentique-se com o token de acesso através da biblioteca azure-identity e obtenha as informações de conexão da variável de ambiente adicionada pelo conector de serviço. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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()
Instale dependências.
pip install azure-identity
Obtenha o token de acesso através da biblioteca azure-identity com as variáveis de ambiente adicionadas pelo Service Connector. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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')
No arquivo de configuração, obtenha informações do banco de dados MySQL do Azure a partir de variáveis de ambiente adicionadas pelo serviço Service Connector. Use accessToken adquirido no passo anterior para aceder à base de dados.
# 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
}
}
Instale dependências.
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"
No código, obtenha o token de acesso via azidentity, depois conecte-se ao MySQL do Azure com o token. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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)
}
Instalar dependências
npm install --save @azure/identity
npm install --save mysql2
Obtenha o token de acesso utilizando @azure/identity e as informações do banco de dados MySQL do Azure a partir de variáveis de ambiente adicionadas pelo serviço Service Connector. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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');
});
Para obter mais exemplos de código, consulte Conectar-se a bancos de dados do Azure a partir do App Service sem segredos usando uma identidade gerida.
Identidade gerida atribuída pelo utilizador
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET Cadeia de conexão MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Propriedades da aplicação |
Descrição |
Valor de exemplo |
spring.datasource.azure.passwordless-enabled |
Habilite a autenticação sem senha |
true |
spring.cloud.azure.credential.client-id |
O seu ID de cliente |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
Habilitar identidade gerenciada pelo cliente |
true |
spring.datasource.url |
URL da base de dados |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nome de usuário do banco de dados |
username |
| Nome da variável de ambiente padrão |
Description |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome da base de dados |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
identity-client-ID |
| Nome da variável de ambiente padrão |
Description |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome da base de dados |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<identity-client-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<identity-client-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DBNAME |
Nome da base de dados |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_FLAG |
SSL ou outras bandeiras |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<identity-client-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Opção SSL |
required |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<identity-client-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<identity-client-ID> |
Código de exemplo
Consulte as etapas e o código abaixo para se conectar ao Banco de Dados do Azure para MySQL usando uma identidade gerenciada atribuída pelo usuário.
Para o .NET, não há um plug-in ou biblioteca para suportar conexões sem senha. Pode obter um token de acesso para a identidade gerida ou entidade de serviço usando uma biblioteca cliente como Azure.Identity. Em seguida, você pode usar o token de acesso como senha para se conectar ao banco de dados. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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
Adicione as seguintes dependências no arquivo 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>
Obtenha a cadeia de conexão da variável de ambiente e adicione o nome do plug-in para se conectar ao banco de dados:
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);
Para obter mais informações, consulte Usar Java e JDBC com o Banco de Dados do Azure para MySQL - Servidor flexível.
Instalar dependências
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Autentique-se com token de acesso via azure-identity biblioteca e obtenha informações de conexão da variável de ambiente adicionada pelo Service Connector. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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()
Instale dependências.
pip install azure-identity
Obtenha o token de acesso através da biblioteca azure-identity com as variáveis de ambiente adicionadas pelo Service Connector. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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')
No arquivo de configuração, obtenha informações do banco de dados MySQL do Azure a partir de variáveis de ambiente adicionadas pelo serviço Service Connector. Use accessToken adquirido no passo anterior para aceder à base de dados.
# 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
}
}
Instale dependências.
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"
No código, obtenha o token de acesso através de azidentity e, em seguida, conecte-se ao Azure MySQL com o token. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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)
}
Instalar dependências
npm install --save @azure/identity
npm install --save mysql2
Obtenha o token de acesso usando @azure/identity as informações do banco de dados MySQL do Azure a partir de variáveis de ambiente adicionadas pelo serviço Service Connector. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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');
});
Para obter mais exemplos de código, consulte Conectar-se a bases de dados do Azure a partir do App Service sem segredos usando uma identidade gerida.
Cadeia de ligação
Aviso
A Microsoft recomenda que você use o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento requer um grau muito alto de confiança no aplicativo e acarreta riscos que não estão presentes em outros fluxos. Você só deve usar esse fluxo quando outros fluxos mais seguros, como identidades gerenciadas, não forem viáveis.
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET Cadeia de conexão 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 da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão 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>) |
| Propriedades da aplicação |
Descrição |
Valor de exemplo |
spring.datasource.url |
URL do banco de dados JDBC do Spring Boot |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nome de usuário do banco de dados |
<MySQL-DB-username> |
spring.datasource.password |
Palavra-passe da base de dados |
MySQL-DB-password |
Depois de criada uma conexão de springboot tipo de cliente, o serviço Service Connector adicionará automaticamente as propriedades spring.datasource.url, spring.datasource.username, spring.datasource.password. Assim, o aplicativo de inicialização Spring poderia adicionar beans automaticamente.
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome da base de dados |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Palavra-passe da base de dados |
MySQL-DB-password |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome da base de dados |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Palavra-passe da base de dados |
MySQL-DB-password |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão Go-sql-driver |
<MySQL-DB-username>:<MySQL-DB-password>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Palavra-passe da base de dados |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DBNAME |
Nome da base de dados |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_FLAG |
SSL ou outras bandeiras |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username> |
AZURE_MYSQL_PASSWORD |
Palavra-passe da base de dados |
<MySQL-DB-password> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Palavra-passe da base de dados |
<MySQL-DB-password> |
AZURE_MYSQL_SSLMODE |
Opção SSL |
required |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Palavra-passe da base de dados |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
Código de exemplo
Consulte as etapas e o código abaixo para se conectar ao Banco de Dados do Azure para MySQL usando uma cadeia de conexão.
- Instale dependências. Siga as orientações para instalar o connector/NET MySQL
- No código, obtenha a cadeia de conexão MySQL a partir de variáveis de ambiente adicionadas pelo serviço Service Connector. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
using System;
using System.Data;
using MySql.Data.MySqlClient;
string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
}
- Instale dependências. Siga as orientações para instalar o Connector/J.
- No código, obtenha a cadeia de conexão MySQL a partir de variáveis de ambiente adicionadas pelo serviço Service Connector. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
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();
}
- Instale dependências. Adicione as seguintes dependências ao seu
pom.xml arquivo.
<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>
- Configure o aplicativo Spring App normal, com mais detalhes nesta seção. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
- Instale dependências. Siga as orientações para instalar o Connector/Python.
- No código, obtenha informações de conexão MySQL de variáveis de ambiente adicionadas pelo serviço Service Connector. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
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()
- Instale dependências.
pip install django
- No arquivo de configuração, obtenha informações do banco de dados MySQL de variáveis de ambiente adicionadas pelo serviço Service Connector. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
# 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
}
}
- Instale dependências.
go get -u github.com/go-sql-driver/mysql
- No código, obtenha a cadeia de conexão MySQL a partir de variáveis de ambiente adicionadas pelo serviço Service Connector. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
)
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING")
db, err := sql.Open("mysql", connectionString)
- Instale dependências.
npm install mysql2
- No código, obtenha informações de conexão MySQL de variáveis de ambiente adicionadas pelo serviço Service Connector. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
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.');
});
- Instale dependências. Siga o guia para instalar o MySQLi.
- No código, obtenha informações de conexão MySQL de variáveis de ambiente adicionadas pelo serviço Service Connector. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
<?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);
?>
- Instale dependências.
gem install mysql2
- No código, obtenha informações de conexão MySQL de variáveis de ambiente adicionadas pelo serviço Service Connector. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
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
Principal de serviço
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
O segredo do seu cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
O seu ID de inquilino |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET Cadeia de ligação MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
O segredo do seu cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
O seu ID de inquilino |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Propriedades da aplicação |
Descrição |
Valor de exemplo |
spring.datasource.azure.passwordless-enabled |
Habilite a autenticação sem senha |
true |
spring.cloud.azure.credential.client-id |
O seu ID de cliente |
<client-ID> |
spring.cloud.azure.credential.client-secret |
O segredo do seu cliente |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
O seu ID de inquilino |
<tenant-ID> |
spring.datasource.url |
URL da base de dados |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Nome de usuário do banco de dados |
username |
| Nome da variável de ambiente padrão |
Descrição |
Exemplo de valor |
AZURE_MYSQL_NAME |
Nome da base de dados |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
O segredo do seu cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
O seu ID de inquilino |
<tenant-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome da base de dados |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
O segredo do seu cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
O seu ID de inquilino |
<tenant-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
O segredo do seu cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
O seu ID de inquilino |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão do Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Nome de usuário do banco de dados |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
O segredo do seu cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
O seu ID de inquilino |
<tenant-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DBNAME |
Nome da base de dados |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_FLAG |
SSL ou outras bandeiras |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
O segredo do seu cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
O seu ID de inquilino |
<tenant-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Opção SSL |
required |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
O segredo do seu cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
O seu ID de inquilino |
<tenant-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_HOST |
URL do host do banco de dados |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Nome da base de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
AZURE_MYSQL_CLIENTID |
O seu ID de cliente |
<identity-client-ID> |
AZURE_MYSQL_CLIENTSECRET |
O segredo do seu cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
O seu ID de inquilino |
<tenant-ID> |
Código de exemplo
Consulte os passos e o código abaixo para se conectar ao Banco de Dados do Azure para MySQL utilizando um principal de serviço.
Para o .NET, não há um plug-in ou biblioteca para suportar conexões sem senha. Você pode obter um token de acesso para a identidade gerenciada ou entidade de serviço usando a biblioteca de cliente como Azure.Identity. Em seguida, você pode usar o token de acesso como senha para se conectar ao banco de dados. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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
Adicione as seguintes dependências no arquivo 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>
Obtenha a cadeia de conexão da variável de ambiente e adicione o nome do plug-in para se conectar ao banco de dados:
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);
Para obter mais informações, consulte Usar Java e JDBC com o Banco de Dados do Azure para MySQL - Servidor flexível.
Instalar dependências
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Autentique-se com o token de acesso obtido através da biblioteca azure-identity e obtenha as informações de conexão a partir da variável de ambiente adicionada pelo Service Connector. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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()
Instale dependências.
pip install azure-identity
Obtenção do token de acesso pela biblioteca azure-identity com as variáveis de ambiente adicionadas pelo Service Connector. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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')
No arquivo de configuração, obtenha informações do banco de dados MySQL do Azure a partir de variáveis de ambiente adicionadas pelo serviço Service Connector. Utilize o accessToken adquirido no passo anterior para aceder à base de dados.
# 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
}
}
Instale dependências.
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"
No código, obtenha o token de acesso via azidentity e, em seguida, conecte-se ao Azure MySQL com o token. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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)
}
Instalar dependências
npm install --save @azure/identity
npm install --save mysql2
Obtenha o token de acesso usando @azure/identity e as informações do banco de dados MySQL do Azure a partir de variáveis de ambiente que foram adicionadas pelo serviço Service Connector. Ao usar o código abaixo, descomente a parte do trecho de código para o tipo de autenticação que você deseja usar.
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');
});
Para obter mais exemplos de código, consulte Conectar-se a bases de dados do Azure a partir do App Service sem segredos usando uma identidade gerida.
Próximos passos
Siga a documentação para saber mais sobre o Service Connector.