В этой статье описываются поддерживаемые методы проверки подлинности, клиенты и пример кода, которые можно использовать для подключения приложений к Базе данных Azure для MySQL (гибкий сервер) с помощью "Service Connector". В этой статье также вы найдете имена переменных среды по умолчанию, значения и конфигурацию, полученные при создании подключений к службе.
Внимание
База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуем выполнить обновление до гибкого сервера базы данных Azure для MySQL. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"
Поддерживаемые службы вычислений
Соединитель служб можно использовать для подключения следующих вычислительных служб к База данных Azure для MySQL:
- Служба приложений Azure
- Приложения-контейнеры Azure
- Функции Azure
- Служба Azure Kubernetes (AKS)
- Azure Spring Apps
Поддерживаемые типы проверки подлинности и типы клиентов
В таблице ниже показано, какие сочетания методов проверки подлинности и клиентов поддерживаются для подключения вычислительных служб к базе данных Azure для MySQL с помощью соединителя служб. Значение "Да" указывает, что сочетание поддерживается, а значение "Нет" указывает, что оно не поддерживается.
Тип клиента |
Управляемое удостоверение, назначаемое системой |
Управляемое удостоверение, назначаемое пользователем |
Секретный ключ/строка подключения |
Субъект-служба |
.NET |
Да |
Да |
Да |
Да |
Go (go-sql-driver для MySQL) |
Да |
Да |
Да |
Да |
Java (JDBC) |
Да |
Да |
Да |
Да |
Java — Spring Boot (JDBC) |
Да |
Да |
Да |
Да |
Node.js (mysql) |
Да |
Да |
Да |
Да |
Python (mysql-connector-python) |
Да |
Да |
Да |
Да |
Python-Django |
Да |
Да |
Да |
Да |
PHP (MySQLi) |
Да |
Да |
Да |
Да |
Ruby (mysql2) |
Да |
Да |
Да |
Да |
Нет |
Да |
Да |
Да |
Да |
Примечание.
Назначаемое системой управляемое удостоверение, назначаемое пользователем, и проверка подлинности субъекта-службы поддерживается только в Azure CLI.
Имена переменных среды по умолчанию или свойства приложения и пример кода
Ссылайтесь на сведения о подключении и пример кода в следующих таблицах в соответствии с типом проверки подлинности подключения и типом клиента, чтобы подключить вычислительные службы к База данных Azure для MySQL. Для получения дополнительной информации о соглашениях об именовании, см. статью о внутреннем устройстве соединителя служб.
Управляемое удостоверение, назначаемое системой
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
Свойства приложения |
Описание |
Пример значения |
spring.datasource.azure.passwordless-enabled |
Включение проверки подлинности без пароля |
true |
spring.datasource.url |
URL-адрес базы данных JDBC Spring Boot |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Имя пользователя базы данных |
<MySQL-DB-username> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_NAME |
Имя базы данных |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_NAME |
Имя базы данных |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<database-name> |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_SSL |
Параметр SSL |
true |
Имя переменной среды по умолчанию |
Description |
Пример значения |
AZURE_MYSQL_DBNAME |
Имя базы данных |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_FLAG |
SSL или другие флаги |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
<MySQL-DB-username> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Параметр SSL |
required |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<database-name> |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_SSL |
Параметр SSL |
true |
Пример кода
Ознакомьтесь с инструкциями и кодом дальше, чтобы подключиться к базе данных Azure для MySQL с помощью управляемого удостоверения, назначаемого системой.
Для .NET нет подключаемого модуля или библиотеки для поддержки подключений без пароля. Токен доступа для управляемого удостоверения или учетной записи службы можно получить с помощью клиентской библиотеки, такой как Azure.Identity. Затем вы можете использовать маркер доступа в качестве пароля для подключения к базе данных. Когда вы используете указанный ниже код, раскомментируйте часть фрагмента кода для типа проверки подлинности, который вы хотите использовать.
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
Добавьте следующие зависимости в файл 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>
Получите строку подключения из переменной среды и добавьте имя подключаемого модуля, чтобы подключиться к базе данных.
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);
Дополнительные сведения см. в статье "Использование Java и JDBC с База данных Azure для MySQL — гибкий сервер".
Установка зависимостей
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Проверка подлинности с помощью azure-identity
маркера доступа через библиотеку и получение сведений о подключении из переменной среды, добавленной соединителем службы. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для используемого типа проверки подлинности.
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()
Установите зависимости.
pip install azure-identity
Получите токен доступа через библиотеку azure-identity
с переменными среды, добавленными Сервисным Коннектором. При использовании приведенного ниже кода раскомментируйте фрагмент кода для типа аутентификации, который вы хотите использовать.
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')
В файле параметров получите сведения о базе данных Azure MySQL из переменных среды, добавленных службой Service Connector. Используйте accessToken
полученный на предыдущем шаге для доступа к базе данных.
# 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
}
}
Установите зависимости.
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"
В коде получите токен доступа через azidentity
, а затем подключитесь к Azure MySQL, используя этот токен. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для типа проверки подлинности, который вы хотите использовать.
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)
}
Установка зависимостей
npm install --save @azure/identity
npm install --save mysql2
Получите маркер доступа, используя @azure/identity
и сведения о базе данных Azure MySQL из переменных среды, добавленных службой Service Connector. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для того типа аутентификации, который вы хотите использовать.
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');
});
Дополнительные примеры кода см. в разделе «Подключение к базам данных Azure из службы приложений без секретов с помощью управляемой учетной записи».
Управляемая личность, назначаемая пользователем
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения ADO.NET MySQL |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
Свойства приложения |
Описание |
Пример значения |
spring.datasource.azure.passwordless-enabled |
Включение проверки подлинности без пароля |
true |
spring.cloud.azure.credential.client-id |
Идентификатор клиента |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
Включение управляемой идентификации клиента |
true |
spring.datasource.url |
URL-адрес базы данных |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Имя пользователя базы данных |
username |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_NAME |
Имя базы данных |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
identity-client-ID |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_NAME |
Имя базы данных |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<identity-client-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<database-name> |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_SSL |
Параметр SSL |
true |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<identity-client-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_DBNAME |
Имя базы данных |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_FLAG |
SSL или другие флаги |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<identity-client-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Параметр SSL |
required |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<identity-client-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<database-name> |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_SSL |
Параметр SSL |
true |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<identity-client-ID> |
Пример кода
Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к Azure Database for MySQL с помощью управляемого удостоверения, назначенного пользователем.
Для .NET нет плагина или библиотеки для поддержки подключений без использования пароля. Токен доступа для управляемой идентичности или служебного принципала можно получить с помощью клиентской библиотеки, такой как Azure.Identity. Затем вы можете использовать маркер доступа в качестве пароля для подключения к базе данных. При использовании приведенного ниже кода раскомментируйте часть кода для типа аутентификации, который вы хотите использовать.
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
Добавьте следующие зависимости в файл 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>
Получите строку подключения из переменной среды и добавьте имя подключаемого модуля для соединения с базой данных.
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);
Дополнительные сведения см. в статье "Использование Java и JDBC с База данных Azure для MySQL — гибкий сервер".
Установка зависимостей
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Аутентификация с использованием azure-identity
маркера доступа через библиотеку и получение информации о подключении из переменной среды, добавленной Service Connector. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для типа проверки подлинности, который вы хотите использовать.
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()
Установите зависимости.
pip install azure-identity
Получите токен доступа через библиотеку azure-identity
, используя переменные среды, добавленные соединителем службы. При использовании представленного ниже кода, раскомментируйте ту часть фрагмента, которая соответствует типу проверки подлинности, который вы хотите использовать.
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')
В файле параметров получите сведения о базе данных Azure MySQL из переменных среды, добавленных службой Service Connector. Используйте accessToken
полученный на предыдущем шаге для доступа к базе данных.
# 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
}
}
Установите зависимости.
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"
В коде получите токен доступа с помощью azidentity
, а затем подключитесь к Azure MySQL с помощью токена. При использовании приведенного ниже кода раскомментируйте фрагмент кода для типа проверки подлинности, который хотите использовать.
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)
}
Установка зависимостей
npm install --save @azure/identity
npm install --save mysql2
Получите токен доступа с помощью @azure/identity
и информации о базе данных Azure MySQL из переменных среды, которые добавлены службой Service Connector. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для того типа проверки подлинности, который вы хотите использовать.
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');
});
Дополнительные примеры кода см. в разделе «Подключение к базам данных Azure из службы приложений без использования секретов с помощью управляемого удостоверения».
строка подключения
Предупреждение
Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, требует очень высокого уровня доверия к приложению и несет риски, которые отсутствуют в других потоках. Этот поток следует использовать только в том случае, если другие более безопасные потоки, такие как управляемые удостоверения, не являются жизнеспособными.
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения MySQL ADO.NET |
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 |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения 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>) |
Свойства приложения |
Описание |
Пример значения |
spring.datasource.url |
URL-адрес базы данных JDBC Spring Boot |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Имя пользователя базы данных |
<MySQL-DB-username> |
spring.datasource.password |
Пароль базы данных |
MySQL-DB-password |
После создания springboot
подключения типа клиента служба Service Connector автоматически добавит свойства spring.datasource.url
, spring.datasource.username
, spring.datasource.password
. Таким образом, приложение Spring Boot может автоматически добавлять бины.
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_NAME |
Имя базы данных |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Пароль базы данных |
MySQL-DB-password |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_NAME |
Имя базы данных |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Пароль базы данных |
MySQL-DB-password |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения Go-sql-driver |
<MySQL-DB-username>:<MySQL-DB-password>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Пароль базы данных |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<database-name> |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_SSL |
Параметр SSL |
true |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_DBNAME |
Имя базы данных |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_FLAG |
SSL или другие флаги |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
<MySQL-DB-username> |
AZURE_MYSQL_PASSWORD |
Пароль базы данных |
<MySQL-DB-password> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Пароль базы данных |
<MySQL-DB-password> |
AZURE_MYSQL_SSLMODE |
Параметр SSL |
required |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Пароль базы данных |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<database-name> |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_SSL |
Параметр SSL |
true |
Пример кода
Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к базе данных Azure для MySQL с помощью строки подключения.
- Установите зависимости. Следуйте инструкциям по установке соединителя/NET MySQL
- В коде получите строку подключения MySQL из переменных среды, добавленных службой Service Connector. Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
using System;
using System.Data;
using MySql.Data.MySqlClient;
string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
}
- Установите зависимости. Следуйте инструкциям по установке Connector/J.
- В коде получите mySQL строка подключения из переменных среды, добавленных службой Service Connector. Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
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();
}
- Установите зависимости. Добавьте следующие зависимости в файл
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>
- Настройте обычное приложение Spring App, дополнительные сведения в этом разделе. Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
- Установите зависимости. Следуйте инструкциям по установке Connector или Python.
- В коде получите сведения о подключении MySQL из переменных среды, добавленных службой Service Connector. Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
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()
- Установите зависимости.
pip install django
- В файле параметров получите сведения о базе данных MySQL из переменных среды, добавленных службой Service Connector. Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
# 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
}
}
- Установите зависимости.
go get -u github.com/go-sql-driver/mysql
- В коде получите строку подключения MySQL из переменных среды, добавленных службой "Service Connector". Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
)
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING")
db, err := sql.Open("mysql", connectionString)
- Установите зависимости.
npm install mysql2
- В коде получите сведения о подключении MySQL из переменных среды, добавленных службой Service Connector. Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
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.');
});
- Установите зависимости. Следуйте инструкциям по установке MySQLi.
- В коде получите сведения о подключении MySQL из переменных среды, добавленных службой Service Connector. Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
<?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);
?>
- Установите зависимости.
gem install mysql2
- В коде получите сведения о подключении MySQL из переменных среды, добавленных службой Service Connector. Чтобы установить зашифрованное подключение к серверу MySQL по протоколу SSL, выполните следующие действия.
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
Субъект-служба
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_MYSQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения MySQL ADO.NET |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_MYSQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения JDBC MySQL |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
Свойства приложения |
Описание |
Пример значения |
spring.datasource.azure.passwordless-enabled |
Включение проверки подлинности без пароля |
true |
spring.cloud.azure.credential.client-id |
Идентификатор клиента |
<client-ID> |
spring.cloud.azure.credential.client-secret |
Секрет клиента |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
Идентификатор клиента |
<tenant-ID> |
spring.datasource.url |
URL-адрес базы данных |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Имя пользователя базы данных |
username |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_NAME |
Имя базы данных |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_MYSQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_NAME |
Имя базы данных |
MySQL-DB-name |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_MYSQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_MYSQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Строка подключения Go-sql-driver |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Имя пользователя базы данных |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<database-name> |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_SSL |
Параметр SSL |
true |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_MYSQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_DBNAME |
Имя базы данных |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_FLAG |
SSL или другие флаги |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_MYSQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
Параметр SSL |
required |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_MYSQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
Имя переменной среды по умолчанию |
Описание |
Пример значения |
AZURE_MYSQL_HOST |
URL-адрес узла базы данных |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Имя пользователя базы данных |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Имя базы данных |
<database-name> |
AZURE_MYSQL_PORT |
Номер порта |
3306 |
AZURE_MYSQL_SSL |
Параметр SSL |
true |
AZURE_MYSQL_CLIENTID |
Идентификатор клиента |
<identity-client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Секрет клиента |
<client-secret> |
AZURE_MYSQL_TENANTID |
Идентификатор клиента |
<tenant-ID> |
Пример кода
Ознакомьтесь с инструкциями и кодом ниже, чтобы подключиться к базе данных Azure для MySQL с помощью сервисного принципала.
Для .NET нет плагина или библиотеки для поддержки соединений без пароля. Токен доступа для управляемого удостоверения или служебного принципала можно получить с помощью клиентской библиотеки, такой как Azure.Identity. Затем вы можете использовать маркер доступа в качестве пароля для подключения к базе данных. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для того типа проверки подлинности, который вы хотите использовать.
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
Добавьте следующие зависимости в файл 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>
Извлеките строку подключения из переменной среды и добавьте имя плагина к строке подключения для подключения к базе данных.
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);
Дополнительные сведения см. в статье "Использование Java и JDBC с База данных Azure для MySQL — гибкий сервер".
Установка зависимостей
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Аутентификация с помощью маркера доступа, полученного через библиотеку, и получение информации о подключении из переменной среды, которую добавил соединитель службы. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для типа проверки подлинности, который вы хотите использовать.
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()
Установите зависимости.
pip install azure-identity
Получите маркер доступа через библиотеку azure-identity
с переменными среды, добавленными коннектором службы. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для используемого типа проверки подлинности.
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')
В файле параметров получите сведения о базе данных Azure MySQL из переменных среды, добавленных службой Service Connector. Используйте accessToken
полученный на предыдущем шаге для доступа к базе данных.
# 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
}
}
Установите зависимости.
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"
В коде получите токен доступа azidentity
, а затем подключитесь к Azure MySQL, используя этот токен. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для типа аутентификации, который вы хотите использовать.
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)
}
Установка зависимостей
npm install --save @azure/identity
npm install --save mysql2
Получите маркер доступа с помощью @azure/identity
и информации о базе данных Azure MySQL из переменных среды, добавленных службой подключения Service Connector. При использовании приведенного ниже кода раскомментируйте часть фрагмента кода для типа проверки подлинности, который вы хотите использовать.
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');
});
Дополнительные примеры кода см. в разделе Подключение к базам данных Azure из службы приложений без секретов с помощью управляемого удостоверения.
Следующие шаги
Дополнительные сведения о соединителе службы см. в документации.