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.