Aracılığıyla paylaş


Yeniden yönlendirme ile MySQL için Azure Veritabanı'na bağlanma

ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Tek Sunucu

Önemli

MySQL için Azure Veritabanı tek sunucu kullanımdan kaldırma yolundadır. 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?

Bu makalede, bir uygulamanın yeniden yönlendirme moduyla MySQL için Azure Veritabanı sunucunuza nasıl bağlanacakları açıklanmaktadır. Yeniden yönlendirme, uygulamaların doğrudan arka uç sunucu düğümlerine bağlanmasına izin vererek istemci uygulamaları ile MySQL sunucuları arasındaki ağ gecikme süresini azaltır.

Başlamadan önce

Azure Portal oturum açın. Altyapı sürümü 5.6, 5.7 veya 8.0 olan bir MySQL için Azure Veritabanı sunucusu oluşturun.

Ayrıntılar için bkz. Azure portalını veya Azure CLI'yı kullanarak MySQL için Azure Veritabanı sunucusu oluşturma.

Önemli

Yeniden yönlendirme şu anda MySQL için Azure Veritabanı için Özel Bağlantı ile desteklenmemektedir.

Yeniden yönlendirmeyi etkinleştirme

MySQL için Azure Veritabanı sunucunuzda parametresini redirect_enabledON yeniden yönlendirme moduyla bağlantılara izin verecek şekilde yapılandırın. Bu sunucu parametresini güncelleştirmek için Azure portalını veya Azure CLI'yı kullanın.

PHP

PHP uygulamalarında yeniden yönlendirme desteği, Microsoft tarafından geliştirilen mysqlnd_azure uzantısı aracılığıyla sağlanır.

mysqlnd_azure uzantısı, PECL aracılığıyla PHP uygulamalarına eklenebilir ve resmi olarak yayımlanan PECL paketi aracılığıyla uzantının yüklenmesi ve yapılandırılması kesinlikle önerilir.

Önemli

PHP mysqlnd_azure uzantısında yeniden yönlendirme desteği şu anda önizleme aşamasındadır.

Yeniden yönlendirme mantığı

Önemli

1.1.0 sürümünden itibaren yeniden yönlendirme mantığı/davranışı güncelleştirildi ve sürüm 1.1.0+ kullanılması önerilir.

Yeniden yönlendirme davranışı değeri mysqlnd_azure.enableRedirecttarafından belirlenir. Aşağıdaki tabloda, 1.1.0+ sürümünden itibaren bu parametrenin değerine göre yeniden yönlendirme davranışı özetlenmiştir.

mysqlnd_azure uzantısının eski bir sürümünü (sürüm 1.0.0-1.0.3) kullanıyorsanız, yeniden yönlendirme davranışı değerine mysqlnd_azure.enabledgöre belirlenir. Geçerli değerler şunlardır off (aşağıdaki tabloda belirtilen davranışa benzer şekilde davranır) ve on (aşağıdaki tabloda olduğu gibi preferred davranır).

mysqlnd_azure.enableRedirect değeri Davranış
off veya 0 Yeniden yönlendirme kullanılmaz.
on veya 1 - Bağlantı sürücü tarafında SSL kullanmıyorsa, bağlantı yapılmaz. Şu hata döndürülür: "mysqlnd_azure.enableRedirect açık, ancak SSL seçeneği bağlantı dizesi ayarlanmadı. Yeniden yönlendirme yalnızca SSL ile mümkündür."
- Sürücü tarafında SSL kullanılıyorsa, ancak yeniden yönlendirme sunucuda desteklenmiyorsa, ilk bağlantı durdurulur ve şu hata döndürülür: "MySQL sunucusunda yeniden yönlendirme etkinleştirilmediğinden veya ağ paketi yeniden yönlendirme protokollerini karşılamadığından Bağlan iptal edildi."
- MySQL sunucusu yeniden yönlendirmeyi destekliyorsa ancak yeniden yönlendirilen bağlantı herhangi bir nedenle başarısız olduysa, ilk proxy bağlantısını da durdurun. Yeniden yönlendirilen bağlantının hatasını döndür.
preferred veya 2
(varsayılan değer)
- mysqlnd_azure mümkünse yeniden yönlendirmeyi kullanır.
- Bağlantı sürücü tarafında SSL kullanmıyorsa, sunucu yeniden yönlendirmeyi desteklemiyorsa veya yeniden yönlendirilen bağlantı, proxy bağlantısı hala geçerli bir bağlantıyken önemli olmayan bir nedenle bağlanamıyorsa, ilk ara sunucu bağlantısına geri döner.

kullanarak mysqlnd_azure.enableRedirecttek MySQL için Azure Veritabanı sunucuya başarılı bir bağlantı için, uyumluluk gereksinimlerine göre kök sertifikanızı birleştirmenin zorunlu adımlarını izlemeniz gerekir. Daha fazla bilgi için lütfen bağlantıyı ziyaret edin.

Belgenin sonraki bölümlerinde, PECL kullanarak uzantının mysqlnd_azure nasıl yükleneceği ve bu parametrenin değerinin nasıl ayarlanacağı özetlenmiştir.

Ön Koşullar

  • PHP sürümleri 7.2.15+ ve 7.3.2+
  • PHP PEAR
  • php-mysql
  • MySQL sunucusu için Azure Veritabanı
  1. PECL ile mysqlnd_azure yükleyin. Sürüm 1.1.0+'ın kullanılması önerilir.

    sudo pecl install mysqlnd_azure
    
  2. Aşağıdakini çalıştırarak uzantı dizinini (extension_dir) bulun:

    php -i | grep "extension_dir"
    
  3. Dizinleri döndürülen klasöre değiştirin ve bu klasörde bulunduğundan emin olun mysqlnd_azure.so .

  4. Aşağıdakini çalıştırarak .ini dosyaları klasörünü bulun:

    php -i | grep "dir for additional .ini files"
    
  5. Dizinleri bu döndürülen klasöre değiştirin.

  6. için mysqlnd_azureyeni bir .ini dosyası oluşturun. Modüller ini dosyalarının ad sırasına göre yüklendiğinden, adın alfabe sırasının mysqnld'den sonra olduğundan emin olun. Örneğin, .ini olarak adlandırılırsa mysqlnd10-mysqlnd.inimysqlnd ini değerini olarak 20-mysqlnd-azure.iniadlandırın.

  7. Yeni .ini dosyasının içine, yeniden yönlendirmeyi etkinleştirmek için aşağıdaki satırları ekleyin.

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

Yeniden yönlendirmeyi onayla

Yeniden yönlendirmenin aşağıdaki örnek PHP koduyla yapılandırıldığını da onaylayabilirsiniz. adlı mysqlConnect.php bir PHP dosyası oluşturun ve aşağıdaki kodu yapıştırın. Sunucu adını, kullanıcı adını ve parolayı kendi adınızla güncelleştirin.

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

Sonraki adımlar