Herstellen einer Verbindung mit Azure Database for MySQL mit Umleitung
GILT FÜR: Azure-Datenbank für MySQL - Single Server
Wichtig
Azure Database for MySQL Single Server wird eingestellt. Es wird dringend empfohlen, ein Upgrade auf Azure Database for MySQL Flexible Server auszuführen. Weitere Informationen zum Migrieren zu Azure Database for MySQL Flexible Server finden Sie unter Was geschieht mit Azure Database for MySQL Single Server?
In diesem Artikel wird erläutert, wie Sie eine Anwendung mit Ihrem Azure Database for MySQL-Server im Umleitungsmodus verbinden. Durch die Umleitung wird die Netzwerklatenz zwischen Clientanwendungen und MySQL-Servern verringert, da die Anwendungen eine direkte Verbindung mit den Back-End-Serverknoten herstellen können.
Voraussetzungen
Melden Sie sich beim Azure-Portal an. Erstellen Sie einen Azure Database for MySQL-Server mit der Engine-Version 5.6, 5.7 oder 8.0.
Weitere Informationen finden Sie unter den Ausführungen zum Erstellen eines Azure Database for MySQL-Servers mit dem Azure-Portal oder der Azure CLI.
Wichtig
Derzeit wird die Umleitung bei Private Link für Azure Database for MySQL nicht unterstützt.
Aktivieren der Umleitung
Konfigurieren Sie auf Ihrem Azure Database for MySQL-Server den redirect_enabled
-Parameter auf ON
, um Verbindungen mit Umleitungsmodus zuzulassen. Verwenden Sie zum Aktualisieren dieses Serverparameters das Azure-Portal oder die Azure CLI.
PHP
Unterstützung für die Umleitung in PHP-Anwendungen ist über die von Microsoft entwickelte mysqlnd_azure-Erweiterung verfügbar.
Die Erweiterung „mysqlnd_azure“ kann über PECL zu PHP-Anwendungen hinzugefügt werden. Es wird dringend empfohlen, die Erweiterung über das offiziell veröffentlichte PECL-Paket zu installieren und zu konfigurieren.
Wichtig
Unterstützung für die Umleitung in der PHP-Erweiterung mysqlnd_azure befindet sich derzeit in der Vorschauphase.
Umleitungslogik
Wichtig
Die Umleitungslogik bzw. das Umleitungsverhalten ab Version 1.1.0 wurde aktualisiert. Es wird empfohlen, Version 1.1.0+ zu verwenden.
Das Umleitungsverhalten wird durch den Wert von mysqlnd_azure.enableRedirect
bestimmt. In der folgenden Tabelle wird das Verhalten der Umleitung basierend auf dem Wert dieses Parameters ab Version 1.1.0+ beschrieben.
Wenn Sie eine ältere Version der Erweiterung „mysqlnd_azure“ (Version 1.0.0-1.0.3) verwenden, wird das Umleitungsverhalten durch den Wert von mysqlnd_azure.enabled
bestimmt. Die gültigen Werte sind off
(verhält sich ähnlich wie das in der folgenden Tabelle beschriebene Verhalten) und on
(verhält sich wie preferred
in der folgenden Tabelle).
mysqlnd_azure.enableRedirect-Wert | Verhalten |
---|---|
off oder 0 |
Die Umleitung wird nicht verwendet. |
on oder 1 |
– Wenn die Verbindung treiberseitig kein SSL verwendet, wird keine Verbindung hergestellt. Der folgende Fehler wird zurückgegeben: „mysqlnd_azure.enableRedirect ist aktiviert, aber die SSL-Option ist in der Verbindungszeichenfolge nicht festgelegt. Die Umleitung ist nur mit SSL möglich.“ – Wenn SSL auf der Treiberseite verwendet wird, die Umleitung auf dem Server jedoch nicht unterstützt wird, erfolgt ein Abbruch der ersten Verbindung, und der folgende Fehler wird zurückgegeben: „Die Verbindung wurde abgebrochen, da die Umleitung auf dem MySQL-Server nicht aktiviert ist oder das Netzwerkpaket nicht dem Umleitungsprotokoll entspricht.“ – Wenn der MySQL-Server die Umleitung unterstützt, bei der umgeleiteten Verbindung jedoch aus irgendeinem Grund ein Fehler aufgetreten ist, brechen Sie auch die erste Proxyverbindung ab. Geben Sie den Fehler der umgeleiteten Verbindung zurück. |
preferred oder 2 (Standardwert) |
– wenn möglich, verwendet mysqlnd_azure die Umleitung. – Wenn die Verbindung treiberseitig kein SSL verwendet, der Server keine Umleitung unterstützt oder die umgeleitete Verbindung aus einem nicht schwerwiegenden Grund nicht hergestellt werden kann, während die Proxyverbindung weiterhin gültig ist, wird auf die erste Proxyverbindung zurückgegriffen. |
Um eine erfolgreiche Verbindung mit Azure Database for MySQL Single Server mit mysqlnd_azure.enableRedirect
herstellen zu können, müssen Sie obligatorische Schritte zum Kombinieren Ihres Stammzertifikats gemäß den Complianceanforderungen ausführen. Weitere Informationen finden Sie unter diesem Link.
In den nachfolgenden Abschnitten dieses Dokuments wird erläutert, wie Sie die Erweiterung mysqlnd_azure
mithilfe von PECL installieren und den Wert dieses Parameters festlegen.
Voraussetzungen
- PHP-Versionen 7.2.15+ und 7.3.2+
- PHP PEAR
- php-mysql
- Azure Database for MySQL-Server
Installieren Sie mysqlnd_azure mit PECL. Wir empfehlen die Verwendung von Version 1.1.0+.
sudo pecl install mysqlnd_azure
Suchen Sie das Erweiterungsverzeichnis (
extension_dir
) mit den folgenden Schritten:php -i | grep "extension_dir"
Ändern Sie die Verzeichnisse auf den zurückgegebenen Ordner, und sorgen Sie dafür, dass sich
mysqlnd_azure.so
in diesem Ordner befindet.Suchen Sie den Ordner für INI-Dateien mit folgenden Schritten:
php -i | grep "dir for additional .ini files"
Ändern Sie die Verzeichnisse auf diesen zurückgegebenen Ordner.
Erstellen Sie eine neue INI-Datei für
mysqlnd_azure
. Vergewissern Sie sich, dass die alphabetische Reihenfolge des Namens nach der von „mysqnld“ beginnt, da die Module entsprechend der Namensreihenfolge der INI-Dateien geladen werden. Wenn die Dateimysqlnd
.ini beispielsweise den Namen10-mysqlnd.ini
hat, benennen Sie die Datei „mysqlnd.ini“ um in20-mysqlnd-azure.ini
.Fügen Sie in der neuen INI-Datei die folgenden Zeilen hinzu, um die Umleitung zu aktivieren.
extension=mysqlnd_azure mysqlnd_azure.enableRedirect = on/off/preferred
Bestätigen der Umleitung
Sie können auch bestätigen, dass die Umleitung mit dem nachstehenden PHP-Beispielcode konfiguriert wurde. Erstellen Sie die PHP-Datei mysqlConnect.php
, und fügen Sie den nachstehenden Code ein. Aktualisieren Sie den Servernamen, den Benutzernamen und das Kennwort mit Ihren eigenen Namen bzw. Ihrem eigenen Kennwort.
<?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();
}
?>
Nächste Schritte
- Weitere Informationen zu Verbindungszeichenfolgen finden Sie unter Verbindungszeichenfolgen.