الاتصال بـ Azure Database لـ MySQL مع إعادة التوجيه

تُطبق على: قاعدة بيانات Azure للخادم الوحيد الخاص بـ MySQL

هام

قاعدة بيانات Azure لخادم MySQL الفردي على مسار الإيقاف. نوصي بشدة بالترقية إلى قاعدة بيانات Azure لخادم MySQL المرن. لمزيد من المعلومات حول الترحيل إلى خادم Azure Database for MySQL المرن، راجع ما الذي يحدث لقاعدة بيانات Azure لخادم MySQL الفردي؟

توضح هذه المقالة كيفية توصيل تطبيق بخادم Azure Database for MySQL مع وضع إعادة التوجيه. يقلل إعادة التوجيه من زمن انتقال الشبكة بين تطبيقات العميل وخوادم MySQL من خلال السماح للتطبيقات بالاتصال مباشرة بعقد خادم الخلفية.

قبل البدء

قم بتسجيل الدخول إلى بوابة Azure. إنشاء قاعدة بيانات Azure لخادم MySQL مع إصدار المحرك 5.6 أو 5.7 أو 8.0.

للحصول على تفاصيل، راجع كيفية إنشاء قاعدة بيانات Azure لخادم MySQL باستخدام مدخل Microsoft Azure أو Azure CLI.

هام

إعادة التوجيه غير مدعومة حاليا مع الارتباط الخاص لقاعدة بيانات Azure لـ MySQL.

تمكين إعادة التوجيه

على خادم Azure Database for MySQL، قم بتكوين المعلمة redirect_enabledل ON للسماح بالاتصالات مع وضع إعادة التوجيه. لتحديث معلمة الخادم هذه، استخدم مدخل Microsoft Azure أو Azure CLI.

PHP

يتوفر الدعم لإعادة التوجيه في تطبيقات PHP من خلال ملحق mysqlnd_azure، الذي طورته Microsoft.

يتوفر ملحق mysqlnd_azure لإضافته إلى تطبيقات PHP من خلال PECL، ويوصى بشدة بتثبيت وتكوين الملحق من خلال حزمة PECL المنشورة رسميا.

هام

دعم إعادة التوجيه في ملحق MYSQLND_AZURE PHP قيد المعاينة حاليا.

منطق إعادة التوجيه

هام

تم تحديث منطق/سلوك إعادة التوجيه بدءا من الإصدار 1.1.0 ومن المستحسن استخدام الإصدار 1.1.0 فأكثر.

يتم تحديد سلوك إعادة التوجيه بواسطة قيمة mysqlnd_azure.enableRedirect. يوضح الجدول أدناه سلوك إعادة التوجيه استنادا إلى قيمة هذه المعلمة بدءا من الإصدار 1.1.0 فأكثر.

إذا كنت تستخدم إصدارا أقدم من ملحق mysqlnd_azure (الإصدار 1.0.0-1.0.3)، يتم تحديد سلوك إعادة التوجيه بواسطة قيمة mysqlnd_azure.enabled. القيم الصالحة هي off (تعمل بشكل مماثل للسلوك الموضح في الجدول أدناه) و on (تعمل كما preferred في الجدول أدناه).

mysqlnd_azure.enableRedirect value السلوك
off أو 0 لن يتم استخدام إعادة التوجيه.
on أو 1 - إذا لم يستخدم الاتصال SSL على جانب برنامج التشغيل، فلن يتم إجراء أي اتصال. يتم إرجاع الخطأ التالي: "mysqlnd_azure.enableRedirect قيد التشغيل، ولكن لم يتم تعيين خيار SSL في سلسلة الاتصال. إعادة التوجيه ممكنة فقط مع SSL."
- إذا تم استخدام SSL على جانب برنامج التشغيل، ولكن إعادة التوجيه غير مدعومة على الخادم، يتم إجهاض الاتصال الأول، ويتم إرجاع الخطأ التالي: "تم إجهاض الاتصال لأن إعادة التوجيه غير ممكنة على خادم MySQL أو أن حزمة الشبكة لا تفي ببروتوكول إعادة التوجيه."
- إذا كان خادم MySQL خاصتي يدعم إعادة التوجيه، ولكن فشل الاتصال الذي تمت إعادة توجيهه لأي سبب من الأسباب، فقم بإفشال اتصال الوكيل الأول أيضا. إرجاع خطأ الاتصال الذي تمت إعادة توجيهه.
preferred أو 2
(القيمة الافتراضية)
- سيستخدم mysqlnd_azure إعادة التوجيه إذا أمكن.
- إذا لم يستخدم الاتصال SSL على جانب برنامج التشغيل، أو لا يدعم الخادم إعادة التوجيه، أو فشل الاتصال المعاد توجيهه في الاتصال لأي سبب غير صالح بينما لا يزال اتصال الوكيل صالحا، فإنه يعود إلى اتصال الوكيل الأول.

للحصول على اتصال ناجح بقاعدة بيانات Azure لخادم MySQL الفردي باستخدام mysqlnd_azure.enableRedirect، تحتاج إلى اتباع الخطوات الإلزامية لدمج الشهادة الجذر وفقا لمتطلبات التوافق. لمزيد من التفاصيل، يرجى زيارة الارتباط.

توضح الأقسام اللاحقة من المستند كيفية تثبيت الملحق mysqlnd_azure باستخدام PECL وتعيين قيمة هذه المعلمة.

المتطلبات المسبقه

  • إصدارات PHP 7.2.15 فأكثر و7.3.2 فأكثر
  • PHP PEAR
  • php-mysql
  • قاعدة بيانات Azure لخادم MySQL
  1. قم بتثبيت mysqlnd_azure باستخدام PECL. يوصى باستخدام الإصدار 1.1.0+.

    sudo pecl install mysqlnd_azure
    
  2. حدد موقع دليل الملحق (extension_dir) عن طريق تشغيل ما يلي:

    php -i | grep "extension_dir"
    
  3. قم بتغيير الدلائل إلى المجلد الذي تم إرجاعه وتأكد من mysqlnd_azure.so وجوده في هذا المجلد.

  4. حدد موقع المجلد لملفات .ini عن طريق تشغيل ما يلي:

    php -i | grep "dir for additional .ini files"
    
  5. تغيير الدلائل إلى هذا المجلد الذي تم إرجاعه.

  6. إنشاء ملف .ini جديد لـ mysqlnd_azure. تأكد من أن الترتيب الأبجدي للاسم بعد ترتيب mysqnld، حيث يتم تحميل الوحدات وفقا لترتيب اسم ملفات ini. على سبيل المثال، إذا تمت mysqlnd تسمية 10-mysqlnd.ini.ini ، فسم mysqlnd ini باسم 20-mysqlnd-azure.ini.

  7. ضمن ملف .ini الجديد، أضف الأسطر التالية لتمكين إعادة التوجيه.

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

تأكيد إعادة التوجيه

يمكنك أيضا تأكيد تكوين إعادة التوجيه باستخدام نموذج التعليمات البرمجية PHP أدناه. أنشئ ملف PHP يُسمى mysqlConnect.php وألصق التعليمة البرمجية أدناه. قم بتحديث اسم الخادم واسم المستخدم وكلمة المرور باستخدام اسم الخادم الخاص بك.

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

الخطوات التالية