Bu makale, Hizmet Bağlayıcısı kullanarak uygulamalarınızı MySQL için Azure Veritabanı - Esnek Sunucu'ya bağlamak için kullanabileceğiniz desteklenen kimlik doğrulama yöntemlerini, istemcileri ve örnek kodu kapsar. Bu makalede, hizmet bağlantıları oluştururken elde edilen varsayılan ortam değişkeni adlarını, değerlerini ve yapılandırmasını da bulacaksınız.
Önemli
MySQL için Azure Veritabanı tek sunucu emeklilik sürecindedir. Esnek MySQL için Azure Veritabanı sunucuya yükseltmenizi kesinlikle öneririz. MySQL için Azure Veritabanı esnek sunucuya geçiş hakkında daha fazla bilgi için bkz. MySQL için Azure Veritabanı Tek Sunucu'ya neler oluyor?
Desteklenen işlem hizmetleri
Hizmet Bağlayıcısı, aşağıdaki işlem hizmetlerini MySQL için Azure Veritabanı bağlamak için kullanılabilir:
- Azure App Service
- Azure Container Apps
- Azure İşlevleri
- Azure Kubernetes Service (AKS)
- Azure Spring Apps
Desteklenen kimlik doğrulama türleri ve istemci türleri
Aşağıdaki tabloda, Hizmet Bağlayıcısı'nı kullanarak işlem hizmetlerinizi MySQL için Azure Veritabanı'na bağlamak için hangi kimlik doğrulama yöntemlerinin ve istemcilerinin desteklendiği gösterilmektedir. "Evet", birleşimin desteklendiğini, "Hayır" ise bunun desteklenmediğini gösterir.
| İstemci türü |
Sistem tarafından atanan yönetilen kimlik |
Kullanıcı tarafından atanan yönetilen kimlik |
Gizli anahtar/bağlantı dizesi |
Hizmet sorumlusu |
| .NET |
Yes |
Yes |
Yes |
Yes |
| Go (mysql için go-sql-sürücüsü) |
Yes |
Yes |
Yes |
Yes |
| Java (JDBC) |
Yes |
Yes |
Yes |
Yes |
| Java - Spring Boot (JDBC) |
Yes |
Yes |
Yes |
Yes |
| Node.js (mysql) |
Yes |
Yes |
Yes |
Yes |
| Python (mysql-connector-python) |
Yes |
Yes |
Yes |
Yes |
| Python-Django |
Yes |
Yes |
Yes |
Yes |
| PHP (MySQLi) |
Yes |
Yes |
Yes |
Yes |
| Ruby (mysql2) |
Yes |
Yes |
Yes |
Yes |
| Hiçbiri |
Yes |
Yes |
Yes |
Yes |
Not
Sistem tarafından atanan yönetilen kimlik, kullanıcı tarafından atanan yönetilen kimlik ve hizmet sorumlusu kimlik doğrulaması yalnızca Azure CLI'da desteklenir.
Varsayılan ortam değişkeni adları veya uygulama özellikleri ve örnek kod
İşlem hizmetlerini MySQL için Azure Veritabanı bağlamak için bağlantınızın kimlik doğrulama türüne ve istemci türüne göre aşağıdaki tablolardaki bağlantı ayrıntılarına ve örnek koda başvurun. Adlandırma kuralları hakkında daha fazla bilgi için Hizmet Bağlayıcısı iç bilgileri makalesine bakın.
Sistem tarafından atanan yönetilen kimlik
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET MySQL bağlantı dizesi |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CONNECTIONSTRING |
JDBC MySQL bağlantı dizesi |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Uygulama özellikleri |
Açıklama |
Örnek değer |
spring.datasource.azure.passwordless-enabled |
Parolasız kimlik doğrulamasını etkinleştirme |
true |
spring.datasource.url |
Spring Boot JDBC veritabanı URL'si |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Veritabanı kullanıcı adı |
<MySQL-DB-username> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_NAME |
Veritabanı adı |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_NAME |
Veritabanı adı |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CONNECTIONSTRING |
Go-sql-driver bağlantı dizesi |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<database-name> |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_SSL |
SSL seçeneği |
true |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_DBNAME |
Veritabanı adı |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_FLAG |
SSL veya diğer bayraklar |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
<MySQL-DB-username> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
SSL seçeneği |
required |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<database-name> |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_SSL |
SSL seçeneği |
true |
Örnek kod
Sistem tarafından atanan yönetilen kimliği kullanarak MySQL için Azure Veritabanı bağlanmak için aşağıdaki adımlara ve koda bakın.
.NET için parolasız bağlantıları destekleyen bir eklenti veya kitaplık yoktur. Azure.Identity gibi istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alabilirsiniz. Ardından veritabanına bağlanmak için parola olarak erişim belirtecini kullanabilirsiniz. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümündeki yorumu kaldırın.
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 dosyanıza aşağıdaki bağımlılıkları ekleyin:
<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>
Ortam değişkeninden bağlantı dizesi alın ve veritabanına bağlanmak için eklenti adını ekleyin:
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);
Daha fazla bilgi için bkz. MySQL için Azure Veritabanı - Esnek Sunucu ile Java ve JDBC kullanma.
Bağımlılıkları yükleme
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Erişim belirtecini, azure-identity kitaplığı aracılığıyla edinip kimlik doğrulaması yapın ve Service Connector tarafından eklenen ortam değişkeninden bağlantı bilgilerini edinin. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığındaki yorum satırını kaldırın.
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()
Bağımlılıkları yükleyin.
pip install azure-identity
Hizmet Bağlayıcısı tarafından eklenen ortam değişkenleriyle azure-identity kitaplığını kullanarak erişim belirteci alın. Kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığındaki yorum satırını kaldırın.
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')
Dosya ayarlama bölümünde, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden Azure MySQL veritabanı bilgilerini alın. Önceki adımda alınan accessToken öğesini veritabanına erişmek için kullanın.
# 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
}
}
Bağımlılıkları yükleyin.
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"
Kodda, azidentity aracılığıyla erişim belirteci alın ve ardından belirteçle Azure MySQL'e bağlanın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod satırının başındaki açıklama işaretini kaldırın.
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)
}
Bağımlılıkları yükleme
npm install --save @azure/identity
npm install --save mysql2
Service Connector hizmeti tarafından eklenen ortam değişkenlerinden ve Azure MySQL veritabanı bilgilerini kullanarak @azure/identity erişim belirteci alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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');
});
Daha fazla kod örneği için bkz Yönetilen kimlik kullanarak gizli diziler olmadan App Service'ten Azure veritabanlarına bağlanma.
Kullanıcı tarafından atanan yönetilen kimlik
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET MySQL bağlantı dizesi |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required; |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
JDBC MySQL bağlantı dizesi |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Uygulama özellikleri |
Açıklama |
Örnek değer |
spring.datasource.azure.passwordless-enabled |
Parolasız kimlik doğrulamasını etkinleştirme |
true |
spring.cloud.azure.credential.client-id |
İstemci kimliğiniz |
<identity-client-ID> |
spring.cloud.azure.credential.client-managed-identity-enabled |
İstemci tarafından yönetilen kimliği etkinleştirme |
true |
spring.datasource.url |
Veritabanı URL'si |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Veritabanı kullanıcı adı |
username |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_NAME |
Veritabanı adı |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
identity-client-ID |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_NAME |
Veritabanı adı |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<identity-client-ID> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<identity-client-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Go-sql-driver bağlantı dizesi |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<database-name> |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_SSL |
SSL seçeneği |
true |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<identity-client-ID> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_DBNAME |
Veritabanı adı |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_FLAG |
SSL veya diğer bayraklar |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<identity-client-ID> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
SSL seçeneği |
required |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<identity-client-ID> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<database-name> |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_SSL |
SSL seçeneği |
true |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<identity-client-ID> |
Örnek kod
Kullanıcı tarafından atanan yönetilen kimliği kullanarak MySQL için Azure Veritabanı bağlanmak için aşağıdaki adımlara ve koda bakın.
.NET için parolasız bağlantıları destekleyen bir eklenti veya kitaplık yoktur. Azure.Identity gibi istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alabilirsiniz. Ardından veritabanına bağlanmak için parola olarak erişim belirtecini kullanabilirsiniz. Aşağıdaki kodu kullanmadan önce, hangi kimlik doğrulama türünü kullanmak istediğinize göre kod parçacığının bölümündeki yorum işaretlerini kaldırın.
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 dosyanıza aşağıdaki bağımlılıkları ekleyin:
<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>
Ortam değişkeninden bağlantı dizesi alın ve veritabanına bağlanmak için eklenti adını ekleyin:
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);
Daha fazla bilgi için bkz. MySQL için Azure Veritabanı - Esnek Sunucu ile Java ve JDBC kullanma.
Bağımlılıkları yükleme
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Kitaplık aracılığıyla azure-identity alınan erişim belirteci ile kimlik doğrulaması yapın ve Service Connector tarafından eklenen ortam değişkeninden bağlantı bilgilerini elde edin. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod satırının üzerindeki yorumu kaldırın.
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()
Bağımlılıkları yükleyin.
pip install azure-identity
Servis Bağlayıcı tarafından eklenen ortam değişkenleriyle azure-identity kütüphanesi aracılığıyla erişim jetonu alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü açıklamayı kaldırın.
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')
Dosya ayarlama bölümünde, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden Azure MySQL veritabanı bilgilerini alın. Önceki adımda edinilen accessToken kullanarak veritabanına erişin.
# 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
}
}
Bağımlılıkları yükleyin.
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"
Kodda, azidentity aracılığıyla bir erişim belirteci alın ve ardından bu belirteçle Azure MySQL'e bağlanın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünün yorum satırını kaldırın.
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)
}
Bağımlılıkları yükleme
npm install --save @azure/identity
npm install --save mysql2
Service Connector hizmeti tarafından eklenen ortam değişkenlerinden ve Azure MySQL veritabanı bilgilerini kullanarak @azure/identity erişim belirteci alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünü yorum satırından çıkarın.
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');
});
Daha fazla kod örneği için, Yönetilen kimlik kullanarak gizli diziler olmadan App Service'ten Azure veritabanlarına bağlanma sayfasına bakın.
Bağlantı dizesi
Uyarı
Microsoft, kullanılabilir en güvenli kimlik doğrulama akışını kullanmanızı önerir. Bu yordamda açıklanan kimlik doğrulama akışı, uygulamada çok yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca yönetilen kimlikler gibi diğer daha güvenli akışlar uygun olmadığında kullanmalısınız.
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET MySQL bağlantı dizesi |
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 |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CONNECTIONSTRING |
JDBC MySQL bağlantı dizesi |
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>) |
| Uygulama özellikleri |
Açıklama |
Örnek değer |
spring.datasource.url |
Spring Boot JDBC veritabanı URL'si |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Veritabanı kullanıcı adı |
<MySQL-DB-username> |
spring.datasource.password |
Veritabanı parolası |
MySQL-DB-password |
İstemci türü bağlantısı oluşturulduktan springboot sonra, Service Connector hizmeti otomatik olarak , , spring.datasource.urlspring.datasource.usernameözelliklerini spring.datasource.passwordekler. Bu nedenle Spring boot uygulaması otomatik olarak fasulye ekleyebilir.
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_NAME |
Veritabanı adı |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Veritabanı parolası |
MySQL-DB-password |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_NAME |
Veritabanı adı |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Veritabanı parolası |
MySQL-DB-password |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CONNECTIONSTRING |
Go-sql-driver bağlantı dizesi |
<MySQL-DB-username>:<MySQL-DB-password>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Veritabanı parolası |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<database-name> |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_SSL |
SSL seçeneği |
true |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_DBNAME |
Veritabanı adı |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_FLAG |
SSL veya diğer bayraklar |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
<MySQL-DB-username> |
AZURE_MYSQL_PASSWORD |
Veritabanı parolası |
<MySQL-DB-password> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_PASSWORD |
Veritabanı parolası |
<MySQL-DB-password> |
AZURE_MYSQL_SSLMODE |
SSL seçeneği |
required |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
MySQL-DB-username |
AZURE_MYSQL_PASSWORD |
Veritabanı parolası |
MySQL-DB-password |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<database-name> |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_SSL |
SSL seçeneği |
true |
Örnek kod
bağlantı dizesi kullanarak MySQL için Azure Veritabanı bağlanmak için aşağıdaki adımlara ve koda bakın.
- Bağımlılıkları yükleyin. Bağlayıcıyı/NET MySQL'i yüklemek için yönergeleri izleyin
- Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden MySQL bağlantı dizesi alın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
using System;
using System.Data;
using MySql.Data.MySqlClient;
string connectionString = Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING");
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
}
- Bağımlılıkları yükleyin. Bağlayıcı/J'yi yüklemek için yönergeleri izleyin.
- Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden MySQL bağlantı dizesi alın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
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();
}
- Bağımlılıkları yükleyin. Dosyanıza
pom.xml aşağıdaki bağımlılıkları ekleyin.
<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>
- Bu bölümde daha ayrıntılı olarak, normal Spring App uygulamasını ayarlayın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
- Bağımlılıkları yükleyin. Bağlayıcı/Python'ı yüklemek için yönergeleri izleyin.
- Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden MySQL bağlantı bilgilerini alın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
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()
- Bağımlılıkları yükleyin.
pip install django
- Dosya ayarlama bölümünde, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden MySQL veritabanı bilgilerini alın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
# 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
}
}
- Bağımlılıkları yükleyin.
go get -u github.com/go-sql-driver/mysql
- Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden MySQL bağlantı dizesi alın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
)
connectionString := os.Getenv("AZURE_MYSQL_CONNECTIONSTRING")
db, err := sql.Open("mysql", connectionString)
- Bağımlılıkları yükleyin.
npm install mysql2
- Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden MySQL bağlantı bilgilerini alın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
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.');
});
- Bağımlılıkları yükleyin. MySQLi'yi yüklemek için kılavuzu izleyin.
- Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden MySQL bağlantı bilgilerini alın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
<?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);
?>
- Bağımlılıkları yükleyin.
gem install mysql2
- Kodda, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden MySQL bağlantı bilgilerini alın. SSL üzerinden MySQL sunucusuna şifreli bağlantı kurmak için bu adımlara bakın.
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
Hizmet sorumlusu
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Müşteri gizli anahtarınız |
<client-secret> |
AZURE_MYSQL_TENANTID |
Kiracı kimliğiniz |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
ADO.NET MySQL bağlantı dizesi |
Server=<MySQL-DB-name>.mysql.database.azure.com;Database=<MySQL-DB-name>;Port=3306;User Id=<MySQL-DBusername>;SSL Mode=Required |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
İstemci sırrınız |
<client-secret> |
AZURE_MYSQL_TENANTID |
Kiracı kimliğiniz |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
JDBC MySQL bağlantı dizesi |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required&user=<MySQL-DB-username> |
| Uygulama özellikleri |
Açıklama |
Örnek değer |
spring.datasource.azure.passwordless-enabled |
Parolasız kimlik doğrulamasını etkinleştirme |
true |
spring.cloud.azure.credential.client-id |
İstemci kimliğiniz |
<client-ID> |
spring.cloud.azure.credential.client-secret |
İstemci sırrınız |
<client-secret> |
spring.cloud.azure.credential.tenant-id |
Kiracı kimliğiniz |
<tenant-ID> |
spring.datasource.url |
Veritabanı URL'si |
jdbc:mysql://<MySQL-DB-name>.mysql.database.azure.com:3306/<MySQL-DB-name>?sslmode=required |
spring.datasource.username |
Veritabanı kullanıcı adı |
username |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_NAME |
Veritabanı adı |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
İstemci gizli anahtarınız |
<client-secret> |
AZURE_MYSQL_TENANTID |
Kiracı kimliğiniz |
<tenant-ID> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_NAME |
Veritabanı adı |
MySQL-DB-name |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
Müşteri gizli anahtarınız |
<client-secret> |
AZURE_MYSQL_TENANTID |
Kiracı kimliğiniz |
<tenant-ID> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
İstemci gizli anahtarınız |
<client-secret> |
AZURE_MYSQL_TENANTID |
Kiracı kimliğiniz |
<tenant-ID> |
AZURE_MYSQL_CONNECTIONSTRING |
Go-sql-driver bağlantı dizesi |
<MySQL-DB-username>@tcp(<server-host>:<port>)/<MySQL-DB-name>?tls=true |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USER |
Veritabanı kullanıcı adı |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<database-name> |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_SSL |
SSL seçeneği |
true |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
İstemci gizli anahtarınız |
<client-secret> |
AZURE_MYSQL_TENANTID |
Kiracı kimliğiniz |
<tenant-ID> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_DBNAME |
Veritabanı adı |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_FLAG |
SSL veya diğer bayraklar |
MySQL_CLIENT_SSL |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
İstemci gizli bilgisi |
<client-secret> |
AZURE_MYSQL_TENANTID |
Kiracı kimliğiniz |
<tenant-ID> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<MySQL-DB-name> |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
<MySQL-DB-username>@<MySQL-DB-name> |
AZURE_MYSQL_SSLMODE |
SSL seçeneği |
required |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<client-ID> |
AZURE_MYSQL_CLIENTSECRET |
İstemci gizliniz |
<client-secret> |
AZURE_MYSQL_TENANTID |
Kiracı kimliğiniz |
<tenant-ID> |
| Varsayılan ortam değişkeni adı |
Açıklama |
Örnek değer |
AZURE_MYSQL_HOST |
Veritabanı ana bilgisayar URL'si |
<MySQL-DB-name>.mysql.database.azure.com |
AZURE_MYSQL_USERNAME |
Veritabanı kullanıcı adı |
MySQL-DB-username |
AZURE_MYSQL_DATABASE |
Veritabanı adı |
<database-name> |
AZURE_MYSQL_PORT |
Bağlantı noktası numarası |
3306 |
AZURE_MYSQL_SSL |
SSL seçeneği |
true |
AZURE_MYSQL_CLIENTID |
İstemci kimliğiniz |
<identity-client-ID> |
AZURE_MYSQL_CLIENTSECRET |
İstemci gizli bilgisi |
<client-secret> |
AZURE_MYSQL_TENANTID |
Kiracı kimliğiniz |
<tenant-ID> |
Örnek kod
Hizmet sorumlusu kullanarak MySQL için Azure Veritabanı bağlanmak için aşağıdaki adımlara ve koda bakın.
.NET için parolasız bağlantıları destekleyen bir eklenti veya kitaplık yoktur. Azure.Identity gibi istemci kitaplığını kullanarak yönetilen kimlik veya hizmet sorumlusu için erişim belirteci alabilirsiniz. Ardından veritabanına bağlanmak için parola olarak erişim belirtecini kullanabilirsiniz. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının bölümünün yorum işaretini kaldırın.
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 dosyanıza aşağıdaki bağımlılıkları ekleyin:
<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>
Ortam değişkeninden bağlantı dizesi alın ve veritabanına bağlanmak için eklenti adını ekleyin:
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);
Daha fazla bilgi için bkz. MySQL için Azure Veritabanı - Esnek Sunucu ile Java ve JDBC kullanma.
Bağımlılıkları yükleme
pip install azure-identity
# install Connector/Python https://dev.mysql.com/doc/connector-python/en/connector-python-installation.html
pip install mysql-connector-python
Erişim jetonuyla kimlik doğrulaması yapın, bunu azure-identity kitaplıktan alın ve Service Connector tarafından eklenen ortam değişkeninden bağlantı bilgilerini edinin. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod bölümündeki yorum işaretlerini kaldırın.
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()
Bağımlılıkları yükleyin.
pip install azure-identity
Hizmet Bağlayıcısı tarafından eklenen ortam değişkenleriyle azure-identity kütüphanesini kullanarak bir erişim belirteci alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının yorum satırlarını kaldırın.
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')
Dosya ayarlama bölümünde, Service Connector hizmeti tarafından eklenen ortam değişkenlerinden Azure MySQL veritabanı bilgilerini alın. Önceki adımda alınan accessToken öğesini veritabanına erişmek için kullanın.
# 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
}
}
Bağımlılıkları yükleyin.
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"
Kod içinde azidentity ile erişim belirteci alın ve ardından belirteçle Azure MySQL'e bağlanın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama türü için kod parçacığının ilgili kısmındaki açıklamayı kaldırın.
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)
}
Bağımlılıkları yükleme
npm install --save @azure/identity
npm install --save mysql2
Service Connector hizmeti tarafından eklenen ortam değişkenlerinden ve Azure MySQL veritabanı bilgilerini kullanarak @azure/identity erişim belirteci alın. Aşağıdaki kodu kullanırken, kullanmak istediğiniz kimlik doğrulama yönteminin kod parçacığındaki yorumunu kaldırın.
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');
});
Daha fazla kod örneği için bkz Yönetilen kimlik kullanarak App Service'ten Azure veritabanlarına gizli anahtarlar olmadan bağlanma.
Sonraki adımlar
Service Connector hakkında daha fazla bilgi edinmek için belgeleri izleyin.