Připojení ke službě Azure Database for MySQL s přesměrováním

PLATÍ PRO: Jednoúčelový server Azure Database for MySQL

Důležité

Jednoúčelový server Azure Database for MySQL je na cestě vyřazení. Důrazně doporučujeme upgradovat na flexibilní server Azure Database for MySQL. Další informace o migraci na flexibilní server Azure Database for MySQL najdete v tématu Co se děje s jednoúčelovým serverem Azure Database for MySQL?

Tento článek vysvětluje, jak připojit aplikaci k serveru Azure Database for MySQL s režimem přesměrování. Přesměrování snižuje latenci sítě mezi klientskými aplikacemi a servery MySQL tím, že umožňuje aplikacím připojovat se přímo k uzlům back-endového serveru.

Než začnete

Přihlaste se k portálu Azure. Vytvořte server Azure Database for MySQL s modulem verze 5.6, 5.7 nebo 8.0.

Podrobnosti najdete v tématu vytvoření serveru Azure Database for MySQL pomocí webu Azure Portal nebo Azure CLI.

Důležité

Přesměrování se v současné době nepodporuje u služby Private Link pro Azure Database for MySQL.

Povolení přesměrování

Na serveru Azure Database for MySQL nakonfigurujte redirect_enabled parametr tak, aby ON povoloval připojení s režimem přesměrování. Pokud chcete aktualizovat tento parametr serveru, použijte Azure Portal nebo Azure CLI.

PHP

Podpora přesměrování v aplikacích PHP je dostupná prostřednictvím rozšíření mysqlnd_azure vyvinutého Microsoftem.

Rozšíření mysqlnd_azure je k dispozici pro přidání do aplikací PHP prostřednictvím PECL a důrazně doporučujeme nainstalovat a nakonfigurovat rozšíření prostřednictvím oficiálně publikovaného balíčku PECL.

Důležité

Podpora přesměrování v rozšíření PHP mysqlnd_azure je aktuálně ve verzi Preview.

Logika přesměrování

Důležité

Byla aktualizována logika přesměrování nebo chování začínající verzí 1.1.0 a doporučuje se použít verzi 1.1.0 nebo novější.

Chování přesměrování je určeno hodnotou mysqlnd_azure.enableRedirect. Následující tabulka popisuje chování přesměrování na základě hodnoty tohoto parametru počínaje verzí 1.1.0+.

Pokud používáte starší verzi rozšíření mysqlnd_azure (verze 1.0.0-1.0.3), je chování přesměrování určeno hodnotou mysqlnd_azure.enabled. Platné hodnoty jsou off (fungují podobně jako chování popsané v tabulce níže) a on (funguje jako preferred v tabulce níže).

hodnota mysqlnd_azure.enableRedirect Chování
off nebo 0 Přesměrování se nepoužije.
on nebo 1 – Pokud připojení nepoužívá protokol SSL na straně ovladače, není provedeno žádné připojení. Vrátí se následující chyba: "mysqlnd_azure.enableRedirect je zapnutý, ale v připojovací řetězec není nastavená možnost SSL. Přesměrování je možné pouze s PROTOKOLem SSL."
– Pokud se ssl používá na straně ovladače, ale přesměrování není na serveru podporované, první připojení se přeruší a vrátí se následující chyba: "Připojení došlo k přerušení, protože přesměrování není povolené na serveru MySQL nebo síťový balíček nesplňuje protokol přesměrování."
– Pokud server MySQL podporuje přesměrování, ale z jakéhokoli důvodu se přesměrované připojení nezdařilo, přerušte také první připojení proxy serveru. Vrátí chybu přesměrovaného připojení.
preferred nebo 2
(výchozí hodnota)
– mysqlnd_azure použije přesměrování, pokud je to možné.
– Pokud připojení nepoužívá protokol SSL na straně ovladače, server nepodporuje přesměrování nebo se přesměrované připojení nepodaří připojit z jakéhokoli nefaktálního důvodu, zatímco připojení proxy serveru je stále platné, vrátí se zpět na první připojení proxy serveru.

Pokud chcete úspěšné připojení k jednoúčelovém serveru Azure Database for MySQL, mysqlnd_azure.enableRedirectmusíte postupovat podle požadavků na dodržování předpisů podle povinných kroků při kombinování kořenového certifikátu. Další podrobnosti najdete na odkazu.

Následující části dokumentu popisují, jak nainstalovat mysqlnd_azure rozšíření pomocí PECL a nastavit hodnotu tohoto parametru.

Požadavky

  • PHP verze 7.2.15 nebo novější a 7.3.2+
  • PHP PEAR
  • php-mysql
  • Databáze Azure pro server MySQL
  1. Nainstalujte mysqlnd_azure s PECL. Doporučujeme použít verzi 1.1.0 nebo novější.

    sudo pecl install mysqlnd_azure
    
  2. Vyhledejte adresář rozšíření (extension_dir) spuštěním následujícího příkazu:

    php -i | grep "extension_dir"
    
  3. Změňte adresáře na vrácenou složku a ujistěte se, že mysqlnd_azure.so je umístěná v této složce.

  4. Složku pro soubory .ini vyhledejte spuštěním následujícího příkazu:

    php -i | grep "dir for additional .ini files"
    
  5. Změňte adresáře na tuto vrácenou složku.

  6. Vytvořte nový soubor .ini pro mysqlnd_azure. Ujistěte se, že pořadí abecedy názvu je za názvem mysqnld, protože moduly jsou načteny podle pořadí názvů souborů ini. Pokud má například mysqlnd název .ini, pojmenujte 10-mysqlnd.inimysqlnd ini jako 20-mysqlnd-azure.ini.

  7. Do nového souboru .ini přidejte následující řádky pro povolení přesměrování.

    extension=mysqlnd_azure
    mysqlnd_azure.enableRedirect = on/off/preferred
    

Potvrzení přesměrování

Můžete také ověřit, že je přesměrování nakonfigurované s následujícím vzorovým kódem PHP. Vytvořte volaný mysqlConnect.php soubor PHP a vložte následující kód. Aktualizujte název serveru, uživatelské jméno a heslo vlastním.

<?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();
  }
?>

Další kroky