Esta página mostra os métodos de autenticação e clientes com suporte e mostra um código de exemplo que você pode usar para conectar o Banco de Dados do Azure para MySQL – Servidor Flexível a outros serviços de nuvem usando o Conector de Serviço. Esta página também mostra nomes e valores da variável de ambiente padrão (ou configuração do Spring Boot) que você obtém ao criar a conexão de serviço.
Serviço de computação com suporte
O Conector de Serviço pode ser usado para conectar os seguintes serviços de computação ao Banco de Dados do Azure para MySQL:
- Serviço de Aplicativo do Azure
- Aplicativos de Contêiner do Azure
- Azure Functions
- AKS (Serviço de Kubernetes do Azure)
- Azure Spring Apps
Tipos de autenticação e tipos de cliente com suporte
A tabela abaixo mostra quais combinações de métodos de autenticação e clientes têm suporte para conectar seu serviço de computação ao Banco de Dados do Azure para MySQL usando o Conector de Serviço. “Sim” indica que a combinação tem suporte e “Não” indica que ela não tem.
| Tipo de cliente |
Identidade gerenciada atribuída pelo sistema |
Identidade gerenciada atribuída pelo usuário |
Cadeia de conexão/segredo |
Entidade de serviço |
| .NET |
Sim |
Sim |
Sim |
Yes |
| Go (go-sql-driver para mysql) |
Sim |
Sim |
Sim |
Yes |
| Java (JDBC) |
Sim |
Sim |
Sim |
Yes |
| Java – Spring Boot (JDBC) |
Sim |
Sim |
Sim |
Yes |
| Node.js (mysql) |
Sim |
Sim |
Sim |
Yes |
| Python (mysql-connector-python) |
Sim |
Sim |
Sim |
Yes |
| Python-Django |
Sim |
Sim |
Sim |
Yes |
| PHP (MySQLi) |
Sim |
Sim |
Sim |
Yes |
| Ruby (mysql2) |
Sim |
Sim |
Sim |
Yes |
| Nenhum |
Sim |
Sim |
Sim |
Yes |
Essa tabela indica que todas as combinações de tipos de clientes e métodos de autenticação na tabela têm suporte. Todos os tipos de clientes podem usar qualquer um dos métodos de autenticação para se conectar ao Banco de Dados do Azure para MySQL usando o Conector de Serviço.
Observação
A identidade gerenciada atribuída pelo sistema, a identidade gerenciada atribuída pelo usuário e a entidade de serviço têm suporte apenas 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 os serviços de computação ao Banco de Dados do Azure para MySQL. Para saber mais sobre as convenções de nomenclatura, confira o artigo Detalhes internos no conector de serviço.
Identidade Gerenciada atribuída pelo sistema
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Nome 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 do aplicativo |
Descrição |
Valor de exemplo |
spring.datasource.azure.passwordless-enabled |
Habilitar 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 do banco 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_NAME |
Nome do banco 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 do banco 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 do banco 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 outros sinalizadores |
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 do banco 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 do banco 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 pelo sistema.
Para o .NET, não existe um plug-in ou biblioteca que dê suporte a conexões sem senha. Você pode obter um token de acesso para a identidade gerenciada ou entidade de serviço utilizando a biblioteca de clientes como Azure.Identity. Em seguida, você pode utilizar o token de acesso como senha para se conectar ao banco de dados. Ao usar o código abaixo, descompacte a parte do snippet 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 dependências a seguir no seu 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, confira Usar o Java e o JDBC com o Banco de Dados do Azure para MySQL com 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 com a obtenção de token de acesso por meio da biblioteca azure-identity e obtenha informações de conexão da variável de ambiente adicionada pelo conector de serviço. Ao usar o código abaixo, descompacte a parte do snippet 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 as dependências.
pip install azure-identity
Obtenha o token de acesso por meio da biblioteca azure-identity com as variáveis de ambiente adicionadas pelo Conector de Serviço. Ao usar o código abaixo, descompacte a parte do snippet 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 de variáveis de ambiente adicionadas pelo serviço Conector de Serviço. Use accessToken adquirido na etapa anterior para acessar o banco 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 as 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 por meio de azidentity e conecte-se ao MySQL do Azure com o token. Ao usar o código abaixo, descompacte a parte do snippet 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 informações do banco de dados MySQL do Azure de variáveis de ambiente adicionadas pelo serviço de Conector de Serviço. Ao usar o código abaixo, descompacte a parte do snippet 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 amostras de código, confira Conectar-se aos bancos de dados do Azure a partir do Serviço de Aplicativo sem segredos usando uma identidade gerenciada.
Identidade gerenciada atribuída ao usuário
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
Sua ID de cliente |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
Sua 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 do aplicativo |
Descrição |
Valor de exemplo |
spring.datasource.azure.passwordless-enabled |
Habilitar a autenticação sem senha |
true |
spring.cloud.azure.credential.client-id |
Sua ID de cliente |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
Habilitar a identidade gerenciada do cliente |
true |
spring.datasource.url |
URL do banco 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 |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome do banco 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 |
Sua ID de cliente |
identity-client-ID |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome do banco 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 |
Sua ID de cliente |
<identity-client-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
Sua 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 do banco de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
AZURE_MYSQL_CLIENTID |
Sua ID de cliente |
<identity-client-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DBNAME |
Nome do banco 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 outros sinalizadores |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Sua ID de cliente |
<identity-client-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DATABASE |
Nome do banco 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 |
Sua 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 do banco de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
AZURE_MYSQL_CLIENTID |
Sua 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 existe um plug-in ou biblioteca que dê suporte a conexões sem senha. Você pode obter um token de acesso para a identidade gerenciada ou entidade de serviço utilizando a biblioteca de clientes como Azure.Identity. Em seguida, você pode utilizar o token de acesso como senha para se conectar ao banco de dados. Ao usar o código abaixo, descompacte a parte do snippet 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 dependências a seguir no seu 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, confira Usar o Java e o JDBC com o Banco de Dados do Azure para MySQL com 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 com a obtenção de token de acesso por meio da biblioteca azure-identity e obtenha informações de conexão da variável de ambiente adicionada pelo conector de serviço. Ao usar o código abaixo, descompacte a parte do snippet 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 as dependências.
pip install azure-identity
Obtenha o token de acesso por meio da biblioteca azure-identity com as variáveis de ambiente adicionadas pelo Conector de Serviço. Ao usar o código abaixo, descompacte a parte do snippet 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 de variáveis de ambiente adicionadas pelo serviço Conector de Serviço. Use accessToken adquirido na etapa anterior para acessar o banco 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 as 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 por meio de azidentity e conecte-se ao MySQL do Azure com o token. Ao usar o código abaixo, descompacte a parte do snippet 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 informações do banco de dados MySQL do Azure de variáveis de ambiente adicionadas pelo serviço de Conector de Serviço. Ao usar o código abaixo, descompacte a parte do snippet 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 amostras de código, confira Conectar-se aos bancos de dados do Azure a partir do Serviço de Aplicativo sem segredos usando uma identidade gerenciada.
Cadeia de conexão
Aviso
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento exige um grau muito alto de confiança no aplicativo e traz 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 |
Cadeia de conexão ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;Password=<MySQL-DB-password>;SSL Mode=Required |
| Nome 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 do aplicativo |
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 |
Senha do banco de dados |
MySQL-DB-password |
Depois de criar uma conexão de tipo de cliente springboot, o serviço Service Connector adicionará automaticamente propriedades spring.datasource.url, spring.datasource.username e spring.datasource.password. Portanto, o aplicativo Spring Boot pode adicionar beans automaticamente.
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome do banco 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 |
Senha do banco de dados |
MySQL-DB-password |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome do banco 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 |
Senha do banco 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 |
Senha do banco de dados |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Nome do banco 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 do banco 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 outros sinalizadores |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username> |
AZURE_MYSQL_PASSWORD |
Senha do banco de dados |
<MySQL-DB-password> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DATABASE |
Nome do banco 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 |
Senha do banco 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 |
Senha do banco de dados |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Nome do banco 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 as dependências. Siga as diretrizes para instalar o conector/NET MySQL
- No código, obtenha a cadeia de conexão MySQL das variáveis de ambiente adicionadas pelo serviço Conector de Serviço. 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 as dependências. Siga as diretrizes para instalar o Conector/J.
- No código, obtenha a cadeia de conexão MySQL das variáveis de ambiente adicionadas pelo serviço Conector de Serviço. 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 as dependências. Adicione as dependências a seguir ao seu arquivo
pom.xml.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.20.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
- Configure um aplicativo Spring App, obtenha mais detalhes nesta seção. Para estabelecer uma conexão criptografada com o servidor MySQL por SSL, consulte estas etapas.
- Instale as dependências. Siga as diretrizes para instalar o Conector/Python.
- No código, obtenha as informações de conexão do MySQL das variáveis de ambiente adicionadas pelo serviço Conector de Serviço. 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 as 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 Conector de Serviço. 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 as dependências.
go get -u github.com/go-sql-driver/mysql
- No código, obtenha a cadeia de conexão MySQL das variáveis de ambiente adicionadas pelo serviço Conector de Serviço. 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 as dependências.
npm install mysql2
- No código, obtenha as informações de conexão do MySQL das variáveis de ambiente adicionadas pelo serviço Conector de Serviço. 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 as dependências. Siga o guia para instalar o MySQLi.
- No código, obtenha as informações de conexão do MySQL das variáveis de ambiente adicionadas pelo serviço Conector de Serviço. 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 as dependências.
gem install mysql2
- No código, obtenha as informações de conexão do MySQL das variáveis de ambiente adicionadas pelo serviço Conector de Serviço. 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
Entidade de Serviço
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
Sua ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Seu segredo do cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
Sua ID de locatário |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Cadeia de conexão ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
Sua ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Seu segredo do cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
Sua ID de locatário |
<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 do aplicativo |
Descrição |
Valor de exemplo |
spring.datasource.azure.passwordless-enabled |
Habilitar a autenticação sem senha |
true |
spring.cloud.azure.credential.client-id |
Sua ID de cliente |
<client-ID> |
spring.cloud.azure.credential.client-secret |
Seu segredo do cliente |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
Sua ID de locatário |
<tenant-ID> |
spring.datasource.url |
URL do banco 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 |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome do banco 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 |
Sua ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Seu segredo do cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
Sua ID de locatário |
<tenant-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_NAME |
Nome do banco 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 |
Sua ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Seu segredo do cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
Sua ID de locatário |
<tenant-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_CLIENTID |
Sua ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Seu segredo do cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
Sua ID de locatário |
<tenant-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 do banco de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
AZURE_MYSQL_CLIENTID |
Sua ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Seu segredo do cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
Sua ID de locatário |
<tenant-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DBNAME |
Nome do banco 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 outros sinalizadores |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Nome de usuário do banco de dados |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Sua ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Seu segredo do cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
Sua ID de locatário |
<tenant-ID> |
| Nome da variável de ambiente padrão |
Descrição |
Valor de exemplo |
AZURE_MYSQL_DATABASE |
Nome do banco 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 |
Sua ID de cliente |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Seu segredo do cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
Sua ID de locatário |
<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 do banco de dados |
<database-name> |
AZURE_MYSQL_PORT |
Número da porta |
3306 |
AZURE_MYSQL_SSL |
Opção SSL |
true |
AZURE_MYSQL_CLIENTID |
Sua ID de cliente |
<identity-client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Seu segredo do cliente |
<client-secret> |
AZURE_MYSQL_TENANTID |
Sua ID de locatário |
<tenant-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 entidade de serviço.
Para o .NET, não existe um plug-in ou biblioteca que dê suporte a conexões sem senha. Você pode obter um token de acesso para a identidade gerenciada ou entidade de serviço utilizando a biblioteca de clientes como Azure.Identity. Em seguida, você pode utilizar o token de acesso como senha para se conectar ao banco de dados. Ao usar o código abaixo, descompacte a parte do snippet 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 dependências a seguir no seu 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, confira Usar o Java e o JDBC com o Banco de Dados do Azure para MySQL com 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 com a obtenção de token de acesso por meio da biblioteca azure-identity e obtenha informações de conexão da variável de ambiente adicionada pelo conector de serviço. Ao usar o código abaixo, descompacte a parte do snippet 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 as dependências.
pip install azure-identity
Obtenha o token de acesso por meio da biblioteca azure-identity com as variáveis de ambiente adicionadas pelo Conector de Serviço. Ao usar o código abaixo, descompacte a parte do snippet 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 de variáveis de ambiente adicionadas pelo serviço Conector de Serviço. Use accessToken adquirido na etapa anterior para acessar o banco 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 as 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 por meio de azidentity e conecte-se ao MySQL do Azure com o token. Ao usar o código abaixo, descompacte a parte do snippet 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 informações do banco de dados MySQL do Azure de variáveis de ambiente adicionadas pelo serviço de Conector de Serviço. Ao usar o código abaixo, descompacte a parte do snippet 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 amostras de código, confira Conectar-se aos bancos de dados do Azure a partir do Serviço de Aplicativo sem segredos usando uma identidade gerenciada.
Próximas etapas
Siga as documentações para saber mais sobre o Conector de Serviço.