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

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

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

قبل ان تبدأ(Before You Begin)

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

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

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

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

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

تحرير ملف تكوين MySQL الخاص بك(Editing Your MySQL Configuration File)

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

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

  1. للبدء ، استخدم محرر نصوص وحدة التحكم المفضل لديك لتحرير ملف قاعدة بيانات MySQL . في نظام Linux ، اكتب sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf في Terminal أو نافذة SSH لتحرير هذا الملف باستخدام محرر nano (بافتراض أن قاعدة بيانات MySQL في الموقع الافتراضي)

  1. إذا كنت تقوم بتشغيل Windows ، فافتح File Explorer وقم بالوصول إلى المجلد الذي يحتوي على تثبيت MySQL (مثل C:/Program Files/MySQL/MySQL Server 8.0 ). افتح ملف my.ini باستخدام محرر النصوص الافتراضي لديك (مثل المفكرة(Notepad) ) بالنقر المزدوج فوق الإدخال. إذا لم يكن موجودًا ، فقم بإنشاء الملف أولاً(create the file first) .

  1. في نظام Mac(Mac) ، افتح نافذة طرفية واكتب sudo nano /usr/local/etc/my.cnf . هذا هو ملف التكوين الافتراضي لـ MySQL إذا قمت بتثبيت MySQL باستخدام homebrew(using homebrew) .

المواقع المشار إليها أعلاه هي المواقع الافتراضية لملفات تكوين MySQL . إذا لم تنجح هذه الأوامر ، فستحتاج إلى البحث عن الملفات ذات الصلة ( my.cnf أو mysqld.cnf أو my.ini ) يدويًا لتحديد مسار الملف ذي الصلة.

تعيين نطاق IP آمن لعنوان الربط(Setting a Safe Bind-Address IP Range)

  1. بمجرد فتح ملف تكوين MySQL لخادمك(MySQL) ، استخدم مفتاح السهم بلوحة المفاتيح للوصول إلى قسم عنوان الربط(bind-address) بالملف. يحد نطاق IP هذا من الاتصالات بقاعدة البيانات الخاصة بك ، والتي يتم تعيينها عادةً للسماح فقط بالاتصالات من الجهاز المحلي أو الخادم باستخدام 127.0.0.1 .

  1. إذا كنت ترغب في تكوين قاعدة بيانات MySQL للسماح بالاتصالات من الأجهزة التي تستخدم اتصالك الحالي بالإنترنت ، فابحث عن عنوان IP العام الخاص بك(find your public IP address) أولاً ، ثم استبدل 127.0.0.1(127.0.0.1) بعنوان IP هذا. بدلاً من ذلك ، استبدله بعنوان IP للجهاز أو الخادم الذي ترغب في السماح بالاتصالات منه.

  1. في بعض الحالات ، قد ترغب في السماح لجميع(all) الاتصالات عن بُعد بقاعدة بيانات MySQL . هذا ينطوي على مخاطرة(extreme risk) كبيرة ويجب عدم استخدامه على خادم الإنتاج. إذا كنت تريد السماح بذلك ، فاستبدل 127.0.0.1(127.0.0.1) بـ 0.0.0.0 .

  1. قم بتدوين قيمة المنفذ(port ) في قسم الإعدادات الأساسية(Basic Settings) . سيكون هذا مطلوبًا في القسم التالي. إذا لم يكن مرئيًا ، فسيتم استخدام القيمة الافتراضية ، وهي المنفذ 3306 . يمكنك إضافة المنفذ الخاص بك عن طريق كتابة port = xxxx في سطر جديد ، مع استبدال xxxx بقيمة منفذ مناسبة.

  1. بمجرد تكوين عنوان الربط(bind-address ) في ملف تكوين MySQL ، احفظ الملف. إذا كنت تستخدم Linux ، فحدد Ctrl + O و Ctrl + X للقيام بذلك. في نظام Mac ، حدد Command + O و Command + Command + Xيمكن لمستخدمي Windows الحفظ عن طريق تحديد ملف(File ) > حفظ(Save) .

  1. بعد ذلك ، يمكن لمستخدمي Linux و Mac إعادة تشغيل (Mac)MySQL عن طريق كتابة mysql.server stop && mysql.server start أو إعادة تشغيل mysql.server(mysql.server restart) . قد تحتاج إلى رفع مستوى الأمر باستخدام sudo(using sudo) (مثل إعادة تشغيل sudo mysql.server(sudo mysql.server restart) ) واستخدام المسار المناسب لملف mysql.server (مثل /usr/local/bin/mysql.server ).

  1.  إذا لم يعمل الأمر أعلاه ، فحاول إعادة تشغيل sudo service mysql(sudo service mysql restart ) بدلاً من ذلك.

  1. لإعادة تشغيل MySQL على Windows ، افتح نافذة PowerShell جديدة بالنقر بزر الماوس الأيمن فوق قائمة ابدأ(Start) وتحديد Windows PowerShell (المسؤول)(Windows PowerShell (Admin)) . في نافذة PowerShell ، اكتب net stop mysql80 متبوعًا بـ net start mysql80 ، مع استبدال mysql80 باسم الخدمة الصحيح على جهاز الكمبيوتر الخاص بك.

إذا لم تكن متأكدًا من اسم الخدمة الصحيح على Windows ، فاكتب net start للعثور عليه. إذا لم تتمكن من إعادة تحميل التكوين الخاص بك ، فأعد تشغيل الخادم وأعد تحميل MySQL يدويًا (إذا لزم الأمر) بدلاً من ذلك.

تكوين جدران الحماية الخاصة بك(Configuring Your Firewalls)

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

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

تكوين جدران حماية Linux(Configure Linux Firewalls)

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

  1. افتح محطة طرفية أو اتصال SSH واكتب sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT . استبدل XXXX بعنوان IP للجهاز الذي ترغب في السماح باتصالات MySQL منه(from) ، واستبدل YYYY بقيمة المنفذ المطابق من ملف تكوين MySQL (على سبيل المثال (MySQL)3306 ).

  1. سيؤدي هذا إلى تكوين جدار الحماية مؤقتًا. إذا كنت تستخدم خادم Linux المستند إلى Debian أو Ubuntu ، فاجعل هذا التغيير دائمًا عن طريق كتابة sudo netfilter-persistent save و sudo netfilter-persistent reload في المحطة أو نافذة SSH.

إذا لم تكن iptables هي أداة جدار الحماية الافتراضية لتوزيع Linux ، فستحتاج إلى الرجوع إلى دليل مستخدم التوزيع الخاص بك للحصول على مزيد من المعلومات. إذا كانت حزم معينة (مثل netfilter-persistent ) غير متوفرة ، فاستخدم أداة مستودع برامج التوزيع لتثبيتها (على سبيل المثال sudo apt install netfilter-persistent ).

تكوين جدران حماية Windows(Configure Windows Firewalls)

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

  1. انقر بزر الماوس الأيمن فوق(Right-click) قائمة ابدأ(Start) وحدد تشغيل(Run) .

  1. في المربع " تشغيل(Run) " ، اكتب wf.msc وحدد " موافق(OK) " .

  1. في نافذة Windows Defender ، حدد القواعد الواردة(Inbound Rules ) > قاعدة جديدة(New Rule) .

  1. في نافذة New Inbound Rule Wizard ، حدد المنفذ(Port ) > التالي(Next) .

  1. في القائمة التالية ، حدد TCP من الخيارات ، واكتب 3306 (أو أي قيمة منفذ مدرجة في ملف تكوين MySQL الخاص بك ) ، ثم حدد التالي(Next) .

  1. في قائمة الإجراء(Action) ، اترك الخيار الافتراضي للسماح بالاتصال(Allow the connection) ممكّنًا ، ثم حدد التالي(Next) .

  1. قم بتأكيد رغبتك في تطبيق القاعدة على جميع أنواع الشبكات ، ثم حدد التالي(Next)

  1. اكتب اسمًا وصفيًا للقاعدة (مثل MySQL ) في المنفذ المتوفر ، ثم حدد " إنهاء(Finish) " لإضافته إلى قائمة قواعد جدار الحماية.

إذا كنت تواجه مشكلة في الاتصال ، فكرر هذه الخطوات أعلاه ، مع التأكد من إنشاء قاعدة صادرة(outbound rule ) جديدة في إعدادات جدار الحماية باستخدام نفس التفاصيل (المنفذ 3306 ، إلخ). قد تحتاج أيضًا إلى تكوين موجه الشبكة المحلي لديك لفتح المنافذ المحجوبة الضرورية(open the necessary blocked ports) للسماح بالاتصالات الواردة والصادرة بقاعدة البيانات الخاصة بك. 

الاتصال بخادم بعيد باستخدام MySQL(Connecting to a Remote Server Using MySQL)

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

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

الاتصال بـ MySQL على نظام Linux أو Mac(Connecting to MySQL on Linux or Mac)

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

  1. عند المطالبة ، قم بتأكيد كلمة المرور الخاصة بك. في حالة نجاح الاتصال ، ستظهر رسالة نجاح في الجهاز.

الاتصال بـ MySQL على نظام Windows(Connecting to MySQL on Windows)

  1. للاتصال بخادم MySQL(MySQL) بعيد على Windows ، افتح نافذة PowerShell جديدة عن طريق النقر بزر الماوس الأيمن فوق قائمة ابدأ(Start) وتحديد Windows PowerShell (المسؤول)(Windows PowerShell (Admin)) .

  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 ) واسم المستخدم(username) باسم مستخدم MySQL الذي يسمح بالوصول عن بُعد (مثل الجذر(root) ). اتبع(Follow) أي تعليمات إضافية تظهر على الشاشة.
  2. أدخل كلمة المرور الخاصة بك ، عند مطالبتك بذلك ، لإكمال عملية تسجيل الدخول والوصول إلى قاعدة بيانات MySQL عن بُعد.

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

السماح للمستخدم البعيد بالوصول إلى قاعدة بيانات MySQL(Allowing Remote User Access to a MySQL Database)

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

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

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

  1. في قذيفة MySQL البعيدة (باستخدام أداة mysql ) ، اكتب CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; واختر إدخال(Enter) . استبدل اسم المستخدم(username ) باسم المستخدم الذي ترغب في إنشائه ، و xxxx بعنوان IP الذي ترغب في الاتصال منه ، وكلمة المرور بكلمة(password) مرور مناسبة.

  1. ستحتاج إلى منح حسابك الجديد الأذونات اللازمة. للقيام بذلك ، اكتب GRANT ALL ON databasename.* TO username@”x.x.x.x”; واستبدل اسم قاعدة البيانات واسم المستخدم(databasename, username, ) و xxxx  بالتفاصيل الصحيحة. إذا كنت ترغب في ذلك ، فاستبدل اسم قاعدة البيانات(databasename) بـ * لمنحه حق الوصول إلى جميع قواعد البيانات. 

مع منح الوصول ، استخدم الخطوات الواردة في القسم أعلاه للاتصال بخادمك عن بُعد باستخدام حسابك الجديد (على سبيل المثال ، mysql -u username -h XXXX: XXXX -p ).

تأمين بيانات قاعدة البيانات الخاصة بك(Securing Your Database Data)

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

إذا كنت قلقًا بشأن فقدان البيانات ، فيمكنك بسهولة إجراء نسخ احتياطي لقاعدة البيانات الخاصة بك(back up your database) عبر الإنترنت. يتم تشغيل معظم قواعد البيانات باستخدام خوادم Linux - يمكنك أتمتة النسخ الاحتياطي لملفات Linux بسهولة(automate a Linux file backup easily) . إذا كنت تقوم بتشغيل MySQL على Windows ، فيمكنك إعداد نظام نسخ احتياطي تلقائي مماثل لنظام التشغيل Windows(automatic backup system for Windows) ، مما يسمح لك باستعادة بياناتك في حالات الطوارئ.



About the author

أنا مبرمج كمبيوتر منذ أكثر من 15 عامًا. تكمن مهاراتي في تطوير التطبيقات البرمجية وصيانتها ، فضلاً عن تقديم الدعم الفني لتلك التطبيقات. لقد قمت أيضًا بتدريس برمجة الكمبيوتر لطلاب المدارس الثانوية ، وأنا حاليًا مدرس محترف.



Related posts