كيفية السماح بالاتصالات عن بُعد بـ MySQL


إذا كنت تعمل مع قاعدة بيانات MySQL ، فأنت على دراية بالفعل بالتحديات التي تواجهها في الحفاظ على أمان قاعدة البيانات. من محاولات اختراق قاعدة البيانات باستخدام حقن SQL إلى هجمات القوة الغاشمة ، من الصعب الحفاظ على أمان بياناتك ، خاصة إذا كنت تعمل مع قاعدة بيانات عن بُعد.

هناك طرق لتهيئة خادم SQL للسماح بالاتصالات عن بُعد ، ولكن عليك أن تكون حذرًا ، لأن السماح بالاتصالات عن بُعد على خادم MySQL يمكن أن يجعل قاعدة بياناتك هدفًا سهلاً للمتسللين. إذا كنت تريد السماح باتصالات آمنة عن بُعد بقاعدة بيانات MySQL ، فإليك ما تحتاج إلى معرفته.

جدول المحتويات

    قبل ابدأ

    قبل إجراء أي تغييرات على قاعدة بيانات MySQL ، من المهم أن تقوم بنسخ قاعدة البيانات احتياطيًا، خاصةً إذا كنت تعمل على خادم إنتاج (خادم في الاستخدام النشط). قد تؤدي أي تغييرات تجريها على قاعدة البيانات الخاصة بك ، أو الخادم الذي يستضيفها ، إلى فقد البيانات بشكل خطير إذا حدث خطأ ما.

    قد تجد أيضًا أن التغييرات التي تطرأ على اتصالات الخادم قد تمنعك من الوصول إليها بعد ذلك. إذا حدث هذا ، فقد تحتاج إلى استشارة مسؤول الخادم للحصول على مزيد من الدعم. فكرة جيدة هي تجربة أي تغييرات على خادم MySQL يتم تشغيله محليًا للتحقق مما إذا كانت تغييراتك تعمل قبل تجربتها عن بُعد.

    من المحتمل أيضًا أنك إذا أجريت تغييرات على خادم بعيد ، سنحتاج إلى طريقة آمنة للاتصال وإجراء التغييرات. غالبًا ما يكون SSH (Secure Shell)هو أفضل طريقة للقيام بذلك ، حيث يتيح لك الاتصال بخادمك البعيد. يمكنك أيضًا استخدام SSH للاتصال بالخوادم الموجودة على شبكتك المحلية ، مثل تلك الخوادم مستضاف على Raspberry Pi.

    سيرشدك هذا الدليل خلال الخطوات إلى تكوين MySQL للسماح بالاتصالات عن بُعد ، ولكن عليك التأكد من أن لديك وصولاً مباشرًا أو بعيدًا إلى الخادم الذي يستضيف خادم MySQL أولاً.

    لنفترض أنه ليس لديك وصول عن بعد إلى الخادم الخاص بك عبر SSH (على سبيل المثال). في هذه الحالة ، لن تكون قادرًا على تكوين قاعدة بيانات MySQL للسماح بالاتصالات عن بُعد مباشرة إلا إذا كان حساب mySQL الجذر الخاص بك يسمح بالفعل بالاتصالات عن بُعد. لذلك ، سوف تحتاج إلى إنشاء هذا الاتصال أولاً قبل أن تتمكن من المتابعة.

    تحرير ملف تكوين MySQL

    الخطوة الأولى في تكوين MySQL للسماح لـ remote هو تحرير ملف تكوين MySQL الخاص بك. بحلول هذه المرحلة ، سيفترض هذا الدليل أنك قمت بالفعل بالاتصال بالخادم أو الكمبيوتر الشخصي أو جهاز Mac الذي يستضيف قاعدة بيانات mySQL عن بُعد ولديك إمكانية الوصول إلى وحدة التحكم.

    بدلاً من ذلك ، يمكنك تكوين خادم MySQL محلي باستخدام محطة طرفية مفتوحة على نظام التشغيل Mac أو Linux أو محرر نصوص على Windows.

    1. للبدء ، استخدم محرر نصوص وحدة التحكم المفضل لديك لتعديل ملف قاعدة بيانات MySQL. في نظام التشغيل Linux ، اكتب sudo nano /etc/mysql/mysql.conf.d/mysqld.cnfفي محطة طرفية أو نافذة SSH لتحرير هذا الملف باستخدام محرر nano(بافتراض قاعدة بيانات MySQL في الموقع الافتراضي) .
      1. إذا كنت تقوم بتشغيل Windows ، فافتح File Explorer وقم بالوصول إلى المجلد الذي يحتوي على تثبيت MySQL (على سبيل المثال >C: / Program Files / MySQL / MySQL Server 8.0). افتح ملف my.iniباستخدام محرر النصوص الافتراضي لديك (مثل المفكرة) عن طريق النقر المزدوج على الإدخال. إذا لم يكن موجودًا ، قم بإنشاء الملف أولاً.
        1. في نظام Mac ، افتح نافذة طرفية واكتب sudo nano /usr/local/etc/my.cnf. هذا هو ملف التكوين الافتراضي لـ MySQL إذا قمت بتثبيت MySQL باستخدام البيرة.
        2. المواقع المشار إليها أعلاه هي المواقع الافتراضية لملفات تكوين MySQL. إذا لم تنجح هذه الأوامر ، فستحتاج إلى البحث عن الملفات ذات الصلة (my.cnfأو mysqld.cnfأو my.ini) يدويًا لتحديد موقع مسار الملف ذي الصلة.

          تعيين نطاق IP لعنوان الربط الآمن

          1. بمجرد لقد فتحت ملف تكوين MySQL لخادمك ، استخدم مفتاح السهم بلوحة المفاتيح للوصول إلى قسم عنوان الربطمن الملف. يحد نطاق IP هذا الاتصالات بقاعدة البيانات الخاصة بك ، والتي يتم تعيينها عادةً للسماح فقط بالاتصالات من الجهاز المحلي أو الخادم باستخدام 127.0.0.1.
            1. إذا كنت تريد تكوين قاعدة بيانات MySQL للسماح بالاتصالات من الأجهزة التي تستخدم اتصال الإنترنت الحالي ، ابحث عن عنوان IP العام الخاص بك أولاً ، فاستبدل 127.0.0.1بعنوان IP هذا. بدلاً من ذلك ، استبدله بعنوان IP للجهاز أو الخادم الذي ترغب في السماح بالاتصالات منه.
              1. في بعض الظروف ، قد ترغب في السماح لجميعالاتصالات عن بُعد بقاعدة بيانات MySQL. يحمل هذا مخاطرة كبيرةويجب عدم استخدامه على خادم إنتاج. إذا كنت تريد السماح بذلك ، فاستبدل 127.0.0.1بـ 0.0.0.0.
                1. دوّن قيمة المنفذفي قسم الإعدادات الأساسية. سيكون هذا مطلوبًا في القسم التالي. إذا لم يكن مرئيًا ، فسيتم استخدام القيمة الافتراضية ، وهي المنفذ 3306. يمكنك إضافة المنفذ الخاص بك عن طريق كتابة port = xxxxفي سطر جديد ، مع استبدال xxxxبقيمة منفذ مناسبة.
                  1. بمجرد تهيئة عنوان الربطفي ملف تكوين MySQL ، احفظ الملف. إذا كنت تستخدم Linux ، فحدد Ctrl + Oو Ctrl + Xللقيام بذلك. في نظام التشغيل Mac ، حدد Command + Oو Command + X. يمكن لمستخدمي Windows الحفظ عن طريق تحديد ملف>حفظ.
                    1. بعد ذلك ، يمكن لمستخدمي Linux و Mac إعادة تشغيل MySQL بكتابة mysql.server stop && mysql.server startأو إعادة تشغيل mysql.server. قد تحتاج إلى رفع الأمر باستخدام sudo (على سبيل المثال إعادة تشغيل sudo mysql.server) واستخدام المسار المناسب لملف mysql.server (على سبيل المثال ، / usr /local/bin/mysql.server).
                    1. إذا لم يعمل الأمر أعلاه ، فجرب sudo service mysql resetبدلاً من ذلك.
                      1. لإعادة تشغيل MySQL على Windows ، افتح نافذة PowerShell جديدة بالنقر بزر الماوس الأيمن فوق قائمة ابدأ وتحديد Windows PowerShell (المسؤول). في نافذة PowerShell ، اكتب net stop mysql80متبوعًا بـ net start mysql80، واستبدل mysql80باسم الخدمة الصحيح على جهاز الكمبيوتر.
                      2. إذا لم تكن متأكدًا من اسم الخدمة الصحيح على Windows ، فاكتب net startللعثور عليه. إذا لم تتمكن من إعادة تحميل التكوين الخاص بك ، فأعد تشغيل الخادم وأعد تحميل MySQL يدويًا (إذا لزم الأمر) بدلاً من ذلك.

                        تكوين جدران الحماية الخاصة بك

                        في هذه المرحلة ، يجب أن تسمح قاعدة بيانات MySQL بالاتصالات عن بُعد من الأجهزة باستخدام عنوان IP الذي عينته كقيمة عنوان الربطفي ملف تكوين MySQL (أو من جميع الأجهزة إذا قمت بتعيين هذه القيمة على 0.0.0.0بدلاً من ذلك). ومع ذلك ، ستظل الاتصالات محظورة بواسطة جدار حماية الجهاز أو الشبكة.

                        تستخدم معظم الخوادم وأجهزة الكمبيوتر جدارًا ناريًا لحظر الاتصالات ما لم يتم منح الوصول إلى منفذ معين. ستختلف خطوات تكوين هذا ، اعتمادًا على ما إذا كنت تقوم بتشغيل MySQL على نظام التشغيل Windows أو Linux. يتم تعطيل الجدران النارية لنظام التشغيل Mac افتراضيًا ، لذا لن تحتاج إلى إكمال أي خطوات إضافية هنا.

                        تكوين جدران حماية Linux

                        تستخدم العديد من خوادم Linux iptablesكأداة جدار الحماية الافتراضية. يمكنك تكوينه باتباع الخطوات أدناه.

                        1. افتح محطة طرفية أو اتصال SSH واكتب sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT. استبدل XXXXبعنوان IP للجهاز الذي ترغب في السماح باتصالات MySQL منه، واستبدل YYYYبقيمة المنفذ المطابق من تهيئة MySQL ملف (على سبيل المثال ، 3306).
                          1. سيؤدي هذا إلى تهيئة جدار الحماية مؤقتًا. إذا كنت تستخدم خادم Linux يستند إلى Debian أو Ubuntu ، فاجعل هذا التغيير دائمًا عن طريق كتابة sudo netfilter-persistent saveو sudo netfilter-persistent reloadفي المحطة أو SSH window.
                          2. إذا لم تكن iptables هي أداة جدار الحماية الافتراضية لتوزيع Linux لديك ، فستحتاج إلى الرجوع إلى دليل المستخدم الخاص بالتوزيع للحصول على مزيد من المعلومات. إذا كانت بعض الحزم (مثل netfilter-persistent) غير متوفرة ، فاستخدم أداة مستودع برامج التوزيع لتثبيتها (على سبيل المثال ، sudo apt install netfilter-persistent).

                            تكوين جدران حماية Windows

                            إذا كنت تستخدم جهاز كمبيوتر شخصيًا يعمل بنظام Windows أو خادمًا لاستضافة قاعدة البيانات الخاصة بك ، فيمكنك تكوين جدار الحماية الخاص بك باستخدام الخطوات التالية:

                            1. انقر بزر الماوس الأيمن فوق قائمة "ابدأ" وحدد تشغيل.
                              1. في المربع تشغيل، اكتب wf.mscوحدد موافق.
                                1. في نافذة Windows Defender، حدد القواعد الواردة >قاعدة جديدة.
                                  1. في New Inbound Rule Wizard، حدد المنفذ>التالي.
                                    1. في القائمة التالية ، حدد TCPمن الخيارات ، واكتب 3306(أو أي قيمة منفذ مدرجة في ملف تكوين MySQL) ، ثم حدد التالي .
                                      1. في قائمة Action، اترك الخيار الافتراضي لـ السماح بالاتصالممكّنًا ، ثم حدد التالي.
                                        1. أكد ذلك تريد تطبيق القاعدة على جميع أنواع الشبكات ، ثم حدد التالي.
                                          1. اكتب اسمًا وصفيًا للقاعدة (على سبيل المثال ، MySQL) في المنفذ المتوفر ، ثم حدد إنهاءلإضافته إلى قائمة قواعد جدار الحماية.
                                          2. إذا كنت تواجه مشكلة في الاتصال ، كرر هذه الخطوات أعلاه ، مع التأكد من إنشاء قاعدة صادرةجديدة في إعدادات الجدار الناري باستخدام نفس التفاصيل (المنفذ 3306 ، إلخ). قد تحتاج أيضًا إلى تكوين موجه الشبكة المحلي لديك إلى افتح المنافذ المسدودة الضرورية للسماح بالاتصالات الواردة والصادرة بقاعدة البيانات الخاصة بك.

                                            الاتصال بخادم بعيد باستخدام MySQL

                                            بعد تكوين قاعدة بيانات MySQL للسماح بالاتصالات عن بُعد ، ستحتاج فعليًا إلى إنشاء اتصال بها. يمكنك القيام بذلك باستخدام الأمر mysql(mysql.exeعلى Windows) من محطة طرفية أو نافذة PowerShell.

                                            إذا كنت تقوم بتشغيل Windows ، سوف تحتاج إلى التأكد من ذلك تم تثبيت MySQL محليًا قبل أن تبدأ. يمكن لمستخدمي Mac تثبيت MySQL باستخدام البيرة من المحطة (brew install mysql) ، بينما يمكن لمستخدمي Linux استخدام مستودع التطبيقات المحلي (مثل sudo apt install mysql) لتثبيت الحزم الضرورية.

                                            الاتصال بـ MySQL على Linux أو Mac

                                            1. للاتصال بخادم MySQL البعيد على Mac أو في نظام التشغيل Linux ، افتح نافذة طرفية جديدة واكتب mysql -u username -h XXXX: XXXX -p. استبدل XXXX: XXXXبعنوان IP الخاص بالخادم البعيد ورقم المنفذ (مثل 100.200.100.200:3306) و اسم المستخدمباسم مستخدم MySQL.
                                              1. عند المطالبة ، قم بتأكيد كلمة المرور الخاصة بك. إذا كان الاتصال ناجحًا ، فستظهر رسالة نجاح في الجهاز.
                                              2. الاتصال بـ MySQL على Windows

                                                1. للاتصال إلى خادم MySQL بعيد على Windows ، افتح نافذة PowerShell جديدة عن طريق النقر بزر الماوس الأيمن فوق قائمة ابدأ وتحديد Windows PowerShell (المسؤول).
                                                  1. في نافذة PowerShell الجديدة ، اكتب cd “C: \ Program Files \ MySQL \ MySQL Workbench 8.0 \” لإدخال المجلد الصحيح ، مع استبدال هذا الدليل مع دليل التثبيت الصحيح على جهاز الكمبيوتر الخاص بك. على سبيل المثال ، إذا كان إصدارك من MySQL هو 8.0.1 ، فاستخدم المجلد MySQL Workbench 8.0.1بدلاً من ذلك.
                                                    1. من هناك ، اكتب . \ mysql.exe -u username -h X.X.X.X: XXXX -p. استبدل XXXX: XXXXبعنوان IP للخادم البعيد ورقم المنفذ (مثل 100.200.100.200:3306) و اسم المستخدمباسم مستخدم MySQL الذي يسمح بالوصول عن بعد (مثل root). اتبع أي تعليمات إضافية تظهر على الشاشة.
                                                    2. أدخل كلمة المرور الخاصة بك ، عند مطالبتك بذلك ، لإكمال عملية تسجيل الدخول والوصول إلى قاعدة بيانات MySQL عن بُعد.
                                                    3. إذا لم يفلح ذلك ، فاتصل بالخادم أو الكمبيوتر الذي يستضيف خادم MySQL باستخدام SSH (أو ادخل إليه مباشرةً) باستخدام هذه الخطوات وباستخدام الوسيطة -h localhost. يمكنك بعد ذلك إنشاء حساب مستخدم مناسب باتباع الخطوات التالية.

                                                      السماح للمستخدم البعيد بالوصول إلى قاعدة بيانات MySQL

                                                      عند هذه النقطة ، يجب أن تكون قادر على الاتصال بخادم MySQL الخاص بك عن بعد باستخدام حساب المستخدم الجذر لخادمك أو حساب مستخدم آخر بامتيازات مرتفعة. نظرًا لأن هذا المستوى من الوصول غير آمن ، فقد تفضل إنشاء حساب أكثر تقييدًا للوصول إلى قاعدة بيانات MySQL.

                                                      سيكون لهذا الحساب وصول محدود إلى خادم MySQL ، مما يسمح له بالتفاعل مع قواعد البيانات المحددة فقط. لن يكون قادرًا على إجراء تغييرات أكثر جدية ، مثل الوصول إلى بيانات قاعدة البيانات الأخرى ، وإنشاء حسابات مستخدمين جديدة ، وما إلى ذلك.

                                                      ستحتاج إلى امتلاك القدرة على تسجيل الدخول إلى خادم MySQL عن بُعد. إذا لم تتمكن من استخدام حساب الجذر الخاص بك عن بُعد ، فستحتاج إلى الوصول إلى shell الخاص بالخادم باستخدام الأمر mysqlعبر اتصال SSH عن بُعد أو عن طريق الوصول مباشرةً إلى جهاز الكمبيوتر أو الخادم الذي يستضيف الخادم.

                                                      1. في غلاف MySQL البعيد (باستخدام أداة mysql) ، اكتب CREATE USER “username” @ ”xxxx” IDENTIFIED BY “password” ؛وحدد إدخال. استبدل اسم المستخدمباسم المستخدم الذي ترغب في إنشائه ، و xxxxبعنوان IP الذي تريد الاتصال منه ، و كلمة المروربكلمة مرور مناسبة.
                                                        1. ستحتاج إلى منح حسابك الجديد الأذونات اللازمة. للقيام بذلك ، اكتب GRANT ALL ON databasename. * TO username @ ”x.x.x.x”؛واستبدل اسم قاعدة البيانات واسم المستخدمو x.x.x.xبالتفاصيل الصحيحة. إذا كنت ترغب في ذلك ، فاستبدل اسم قاعدة البياناتبـ *لمنحه حق الوصول إلى جميع قواعد البيانات.
                                                        2. مع منح الوصول ، استخدم الخطوات الواردة في القسم أعلاه للاتصال بخادمك عن بُعد باستخدام حسابك الجديد (على سبيل المثال ، mysql -u username -h XXXX: XXXX -p).

                                                          تأمين بيانات قاعدة البيانات

                                                          سواء كنت تعمل مع MySQL أو أي نوع آخر من SQL قاعدة البيانات ، من المهم الحفاظ على اتصالاتك آمنة للحفاظ على أمان بياناتك. وأفضل طريقة للقيام بذلك هي إرسال توليد مفاتيح SSH للوصول عن بعد إلى خادمك ، بدلاً من الاعتماد على كلمات مرور قديمة (ويسهل تخمينها).

                                                          إذا كنت قلقًا بشأن فقدان البيانات ، فيمكنك بسهولة قم بعمل نسخة احتياطية من قاعدة البيانات الخاصة بك عبر الإنترنت. يتم تشغيل معظم قواعد البيانات باستخدام خوادم Linux — يمكنك أتمتة النسخ الاحتياطي لملفات Linux بسهولة. إذا كنت تقوم بتشغيل MySQL على Windows ، فيمكنك إعداد نظام النسخ الاحتياطي التلقائي لنظام التشغيل Windows مشابه ، مما يسمح لك باستعادة بياناتك في حالة الطوارئ.

                                                          المنشورات ذات الصلة:


                                                          9.08.2021