Freigeben über


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
  1. Installieren Sie mysqlnd_azure mit PECL. Wir empfehlen die Verwendung von Version 1.1.0+.

    sudo pecl install mysqlnd_azure
    
  2. Suchen Sie das Erweiterungsverzeichnis (extension_dir) mit den folgenden Schritten:

    php -i | grep "extension_dir"
    
  3. Ändern Sie die Verzeichnisse auf den zurückgegebenen Ordner, und sorgen Sie dafür, dass sich mysqlnd_azure.so in diesem Ordner befindet.

  4. Suchen Sie den Ordner für INI-Dateien mit folgenden Schritten:

    php -i | grep "dir for additional .ini files"
    
  5. Ändern Sie die Verzeichnisse auf diesen zurückgegebenen Ordner.

  6. 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 Datei mysqlnd.ini beispielsweise den Namen 10-mysqlnd.ini hat, benennen Sie die Datei „mysqlnd.ini“ um in 20-mysqlnd-azure.ini.

  7. 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