Se connecter à Azure Database pour MySQL avec la redirection
S’APPLIQUE À : Azure Database pour MySQL - Serveur unique
Important
Le serveur unique Azure Database pour MySQL est en voie de mise hors service. Nous vous conseillons vivement de procéder à une mise à niveau vers Azure Database pour MySQL – Serveur flexible. Pour obtenir plus d’informations sur la migration vers Azure Database pour MySQL – Serveur flexible, consultez Qu’en est-il du Serveur unique Azure Database pour MySQL ?
Cet article explique comment connecter une application à votre serveur Azure Database pour MySQL avec le mode de redirection. La redirection réduit la latence réseau entre les applications clientes et les serveurs MySQL en permettant aux applications de se connecter directement aux nœuds du serveur back-end.
Avant de commencer
Connectez-vous au portail Azure. Créez un serveur Azure Database pour MySQL avec un moteur version 5.6, 5.7 ou 8.0.
Pour plus d’informations, consultez la rubrique relative à la création d’un serveur Azure Database pour MySQL à l’aide du portail Azure ou d’Azure CLI.
Important
La redirection n’est actuellement pas prise en charge avec Private Link pour Azure Database pour MySQL.
Activer la redirection
Sur votre serveur Azure Database pour MySQL, configurez le paramètre redirect_enabled
sur ON
pour autoriser les connexions avec le mode de redirection. Pour mettre à jour ce paramètre de serveur, utilisez le portail Azure ou Azure CLI.
PHP
La prise en charge de la redirection dans les applications PHP est disponible dans l’extension mysqlnd_azure, développée par Microsoft.
L’extension mysqlnd_azure peut être ajoutée aux applications PHP via PECL, et il est vivement recommandé d’installer et de configurer l’extension par le biais du package PECL officiel.
Important
La prise en charge de la redirection dans l’extension mysqlnd_azure PHP est actuellement disponible en préversion.
Logique de redirection
Important
À partir de la version 1.1.0, la logique ou le comportement de redirection a été mis à jour. Il est donc recommandé d’utiliser la version 1.1.0+.
Le comportement de redirection est déterminé par la valeur de mysqlnd_azure.enableRedirect
. Le tableau ci-dessous décrit le comportement de la redirection en fonction de la valeur de ce paramètre à partir de la version 1.1.0+ .
Si vous utilisez une version antérieure de l’extension mysqlnd_azure (version 1.0.0-1.0.3), le comportement de la redirection est déterminé par la valeur de mysqlnd_azure.enabled
. Les valeurs valides sont off
(agit de la même façon que le comportement décrit dans le tableau ci-dessous) et on
(agit comme preferred
dans le tableau ci-dessous).
Valeur mysqlnd_azure.enableRedirect | Comportement |
---|---|
off ou 0 |
La redirection ne sera pas utilisée. |
on ou 1 |
- Si la connexion n’utilise pas le protocole SSL côté pilote, aucune connexion n’est établie. L’erreur suivante est retournée : « mysqlnd_azure.enableRedirect est activé, mais l’option SSL n’est pas définie dans la chaîne de connexion. La redirection n’est possible qu’avec SSL. » - Si le protocole SSL est utilisé côté pilote, mais que la redirection n’est pas prise en charge sur le serveur, la première connexion est abandonnée et l’erreur suivante est retournée : « La connexion a été abandonnée, car la redirection n’est pas activée sur le serveur MySQL ou le package réseau ne respecte pas le protocole de redirection. » - Si le serveur MySQL prend en charge la redirection, mais que la connexion redirigée a échoué pour une raison quelconque, la première connexion au proxy est également abandonnée. Elle retourne l’erreur de la connexion redirigée. |
preferred ou 2 (valeur par défaut) |
- mysqlnd_azure utilise la redirection, si possible. - Si la connexion n’utilise pas le protocole SSL côte pilote, si le serveur ne prend pas en charge la redirection, ou si la connexion redirigée échoue pour une raison récupérable alors que la connexion par proxy est encore valide, elle revient à la première connexion par proxy. |
Pour une connexion réussie à Azure Database pour MySQL - Serveur unique à l’aide de mysqlnd_azure.enableRedirect
, vous devez suivre les étapes obligatoires de combinaison de votre certificat racine conformément aux exigences de conformité. Pour plus d’informations, consultez ce lien.
Les sections suivantes du document décrivent l’installation de l’extension mysqlnd_azure
à l’aide de PECL et la définition de la valeur de ce paramètre.
Composants requis
- Versions PHP 7.2.15+ et 7.3.2+
- PHP PEAR
- php-mysql
- Serveur Azure Database pour MySQL
Installez mysqlnd_azure avec PECL. Il est recommandé d’utiliser la version 1.1.0+.
sudo pecl install mysqlnd_azure
Localisez le répertoire d’extension (
extension_dir
) en exécutant ce qui suit :php -i | grep "extension_dir"
Remplacez les répertoires par le dossier retourné et vérifiez que
mysqlnd_azure.so
se trouve dans ce dossier.Localisez le dossier des fichiers .ini en exécutant ce qui suit :
php -i | grep "dir for additional .ini files"
Remplacez les répertoires par ce dossier retourné.
Créez un nouveau fichier .ini pour
mysqlnd_azure
. Assurez-vous que l’ordre alphabétique du nom se trouve après celui de mysqnld, car les modules sont chargés en fonction de l’ordre des noms des fichiers ini. Par exemple, simysqlnd
.ini est nommé10-mysqlnd.ini
, nommez le fichier ini mysqlnd20-mysqlnd-azure.ini
.Dans le nouveau fichier .ini, ajoutez les lignes suivantes pour activer la redirection.
extension=mysqlnd_azure mysqlnd_azure.enableRedirect = on/off/preferred
Confirmer la redirection
Vous pouvez également confirmer que la redirection est configurée avec l’exemple de code PHP ci-dessous. Créez un fichier PHP nommé mysqlConnect.php
et collez-y le code ci-dessous. Mettez à jour le nom du serveur, le nom d’utilisateur et le mot de passe en les remplaçant par vos propres valeurs.
<?php
$host = '<yourservername>.mysql.database.azure.com';
$username = '<yourusername>@<yourservername>';
$password = '<yourpassword>';
$db_name = 'testdb';
echo "mysqlnd_azure.enableRedirect: ", ini_get("mysqlnd_azure.enableRedirect"), "\n";
$db = mysqli_init();
//The connection must be configured with SSL for the redirection test
$link = mysqli_real_connect ($db, $host, $username, $password, $db_name, 3306, NULL, MYSQLI_CLIENT_SSL);
if (!$link) {
die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
}
else {
echo $db->host_info, "\n"; //if redirection succeeds, the host_info will differ from the hostname you used used to connect
$res = $db->query('SHOW TABLES;'); //test query with the connection
print_r ($res);
$db->close();
}
?>
Étapes suivantes
- Pour plus d’informations sur les chaînes de connexion, consultez Chaînes de connexions.