使用服務連接器,整合適用於 MySQL 的 Azure 資料庫
本文內容
此頁面會顯示支援的驗證方法和用戶端,並顯示範例程式碼,您可以用來將適用於 MySQL 的 Azure 資料庫 - 彈性伺服器連線到使用服務連接器的其他雲端服務。 此頁面也顯示您在建立服務連線時取得的預設環境變數名稱和值 (或 Spring Boot 設定)。
支援的計算服務
服務連接器可用來將下列計算服務連線至適用於 MySQL 的 Azure 資料庫:
Azure App Service
Azure 容器應用程式
Azure Functions
Azure Kubernetes Service (AKS)
Azure Spring Apps
支援的驗證類型和用戶端類型
下表顯示使用服務連接器將計算服務連線到適用於 MySQL 的 Azure 資料庫時,支援哪些驗證方法和用戶端組合。 「是」表示支援的組合,而「否」則表示不支援。
用戶端類型
系統指派的受控識別
使用者指派的受控識別
祕密/連接字串
服務主體
.NET
Yes
.是
.是
Yes
Go (go-sql-driver for mysql)
Yes
.是
.是
Yes
Java (JDBC)
Yes
.是
.是
Yes
Java - Spring Boot (JDBC)
Yes
.是
.是
Yes
Node.js (mysql)
Yes
.是
.是
Yes
Python (mysql-connector-python)
Yes
.是
.是
Yes
Python-Django
Yes
.是
.是
Yes
PHP (MySQLi)
Yes
.是
.是
Yes
Ruby (mysql2)
Yes
.是
.是
Yes
無
Yes
.是
.是
Yes
下表指出支源表格中所有用戶端類型和驗證方法組合。 所有用戶端類型都可以使用任何驗證方法,使用服務連接器連線到適用於 MySQL 的 Azure 資料庫。
注意
系統指派的受控識別、使用者指派的受控識別和服務主體僅在 Azure CLI 中受到支援。
預設環境變數名稱或應用程式屬性和範例程式碼
根據連線的驗證類型和用戶端類型,參考下表中的連線詳細資料和範例程式碼,以便將計算服務連線到適用於 MySQL 的 Azure 資料庫。 如需命名慣例的詳細資訊,請參閱服務連接器內部 一文。
系統指派的受控識別
預設環境變數名稱
描述
範例值
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
Spring Boot JDBC 資料庫 URL
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
預設環境變數名稱
描述
範例值
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
範例指令碼
請參閱下列步驟和程式碼,以使用系統指派的受控識別來連線到適用於 MySQL 的 Azure 資料庫。
在 .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.30</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.1.5</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 與適用於 MySQL 的 Azure 資料庫 (彈性伺服器) 。
安裝相依性
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 資料庫資訊。 使用在前一步驟中取得的 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 資料庫資訊,取得存取權杖。 使用下列程式代碼時,請取消註解您想要使用的驗證類型代碼段部分。
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');
});
如需其他程式碼範例,請參閱使用無祕密的受控識別從 App Service 連線至 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>
範例指令碼
請參閱下列步驟和程式碼,以使用使用者指派的受控識別來連線到適用於 MySQL 的 Azure 資料庫。
在 .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.30</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.1.5</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 與適用於 MySQL 的 Azure 資料庫 (彈性伺服器) 。
安裝相依性
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 資料庫資訊。 使用在前一步驟中取得的 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 資料庫資訊,取得存取權杖。 使用下列程式代碼時,請取消註解您想要使用的驗證類型代碼段部分。
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');
});
如需其他程式碼範例,請參閱使用無祕密的受控識別從 App Service 連線至 Azure 資料庫 。
連接字串
警告
Microsoft 建議您使用最安全的可用驗證流程。 這個程序描述的驗證流程需要在應用程式中具備極高的信任度,且伴隨著其他流程並未面臨的風險。 請僅在其他較安全的流程 (例如受控身分識別) 皆不具可行性的情況下,才使用這個流程。
預設環境變數名稱
描述
範例值
AZURE_MYSQL_CONNECTIONSTRING
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
預設環境變數名稱
描述
範例值
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
Spring Boot JDBC 資料庫 URL
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
用戶端類型連線之後,服務連接器服務會自動新增屬性 spring.datasource.url
、spring.datasource.username
、spring.datasource.password
。 因此 Spring Boot 應用程式會自動新增 Bean。
預設環境變數名稱
描述
範例值
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
範例指令碼
請參閱下列步驟和程式碼,以使用連接字串來連線到適用於 MySQL 的 Azure 資料庫。
安裝相依性。 請遵循指導方針來安裝連接器/NET MySQL
在程式碼中,從服務連接器服務新增的環境變數取得 MySQL 連接字串。 若要透過 SSL 建立 MySQL 伺服器的加密連線,請參閱下列步驟 。
using System;
using System.Data;
using MySql.Data.MySqlClient;
string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
}
安裝相依性。 請遵循指導方針來安裝連接器/J 。
在程式碼中,從服務連接器服務新增的環境變數取得 MySQL 連接字串。 若要透過 SSL 建立 MySQL 伺服器的加密連線,請參閱下列步驟 。
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>4.10.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 應用程式,如需其他詳細資料,請參閱本節 。 若要透過 SSL 建立 MySQL 伺服器的加密連線,請參閱下列步驟 。
安裝相依性。 請遵循指導方針來安裝連接器/Python 。
在程式碼中,從服務連接器服務新增的環境變數取得 MySQL 連線資訊。 若要透過 SSL 建立 MySQL 伺服器的加密連線,請參閱下列步驟 。
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 資料庫資訊。 若要透過 SSL 建立 MySQL 伺服器的加密連線,請參閱下列步驟 。
# 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 連接字串。 若要透過 SSL 建立 MySQL 伺服器的加密連線,請參閱下列步驟 。
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 連線資訊。 若要透過 SSL 建立 MySQL 伺服器的加密連線,請參閱下列步驟 。
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 連線資訊。 若要透過 SSL 建立 MySQL 伺服器的加密連線,請參閱下列步驟 。
<?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 連線資訊。 若要透過 SSL 建立 MySQL 伺服器的加密連線,請參閱下列步驟 。
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
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
您的用戶端識別碼
<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>
範例指令碼
請參閱下列步驟和程式碼,以使用服務主題來連線到適用於 MySQL 的 Azure 資料庫。
在 .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.30</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.1.5</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 與適用於 MySQL 的 Azure 資料庫 (彈性伺服器) 。
安裝相依性
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 資料庫資訊。 使用在前一步驟中取得的 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 資料庫資訊,取得存取權杖。 使用下列程式代碼時,請取消註解您想要使用的驗證類型代碼段部分。
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');
});
如需其他程式碼範例,請參閱使用無祕密的受控識別從 App Service 連線至 Azure 資料庫 。
下一步
請參閱文件,進一步了解服務連接器。