كيفية إعداد قاعدة بيانات بعيدة لتحسين أداء موقع يستخدِم MySQL


محمد أحمد العيل

مقدِّمة

يحدُث، مع ازدياد استخدام التطبيق أو موقع الويب الخاص بك، أن يتجاوز الضغط الناتج عن هذا النمو قدرةَ الإعداد الحالي على الاستجابة. في حال كنتَ تستضيف خادوم الويب والنهاية الخلفيةBackend لقاعدة البيانات على نفس الخادوم الافتراضي الخاص Virtual private server, VPS فمن الجيد فصلُ هاتين الوظيفتيْن بحيثُ تنمو كل منهما على جهاز خاص بها.

سنناقِش في هذا المقال كيفية إعداد خادوم قاعدة بيانات بعيد Remote database server يتّصل به خادوم الويب للحصول على محتوى ديناميكي. سنأخذ ووردبريس مثالا للعمل عليه. سيكون Nginx خادومَ الويب، وسنُعدّه للاتصال بقاعدة بيانات MySQL توجد على حاسوب منفصِل. تجري جميع هذه الإعدادات على خادوم افتراضي خاص يعمل بتوزيعة Ubuntu 12.04.

تثبيت MySQL على خادوم قاعدة البيانات

نبدأ بإعداد خادوم افتراضي خاص ليعمل كخادوم MySQL. يُساعِد وجود خادوم قاعدة البيانات على جهاز منفصِل في سهولة التوسّع عند الوصول إلى الحد الأعلى الذي يسمح به إعدادٌ من جهاز واحد، كما أنه يضع أساسا يُمكن استخدامه في ما بعد للجوء إلى توزيع الحِمل Load balancing من أجل توسيع بيئة العمل.

سنحتاج لتثبيت بعض الحِزم Packages على خادوم قاعدة البيانات قبل بدْء العمل. هذه الحِزم هي نفسها المستخدَمة في تثبيت حِزم LEMP اعتيادية ولكن لن نُثبِّتَها كلَّها هنا (البقية ستتواجد على الخادوم الآخر).

ابدأ بتحديث النسخ المخبَّأة من الحِزم على النظام لديك، وتثبيت خادوم MySQL:

sudo apt-get update

sudo apt-get install mysql-server 

 

سيُطلب منك أثناء تثبيت خادوم MySQL إدخالُ كلمة سر لحساب مُدير قاعدة البيانات (الحساب الجذرRoot user) ثم تأكيدُها.

ستحتاج بعد الانتهاء من تثبيت الحزمة إلى تنفيذ أمر تثبيت قاعدة البيانات والذي سيُنشئ بنية المجلَّدات الضرورية:

sudo mysql_install_db 

نأتي بعد التثبيت إلى خطوة الرفع من مستوى الأمان عن طريق سكريبت يطلُب تعطيل بعض إعدادات MySQL الافتراضية غير الآمنة:

sudo mysql_secure_installation

أدخِل كلمة سر مدير قاعدة بيانات MySQL (ضُبِطت أعلاه). سيطلُب منك ما إذا كنت تريد تغيير كلمة السّر، أدخِل N إن لم ترغَب في ذلك.

بالنسبة لبقية الأسئلة اضغط زر Enter لترك الخيارات الافتراضية، وهو ما سينتُج عنه حذف بعض قواعد البيانات التجريبية وقفل الولوج Access.

إعداد MySQL للسماح للولوج عن بعد

في هذه الفقرة سنضبُط قاعدة البيانات بحيث تسمح بالاتصالات القادمة من حواسيب أخرى.

افتح ملف إعداد MySQL الرئيس بصلاحيات الجذر في محرّر نصوص (Nano في هذا المثال):

sudo nano /etc/mysql/my.cnf 

يُقسَّم هذا الملف إلى مقاطِع مُعرَّفة بكلمات بين معكوفَيْن ([ و ]). اعثُر على المقطَع المعرَّف ب mysqld (لاحِظ حرف d في آخر الكلمة):

[mysqld]

ابحَث في هذا المقطَع من الملف (بينَه وبين المُعرِّف الموالي) عن مُعطى Parameter باسم bind-address. يُخبِر هذا المُعطى قاعدةَ البيانات بعناوين الشبكة التي تستمع للاتصالات القادمة عبرها. الإعداد الحالي هو الإنصات للاتصالات القادمة من الحاسوب المحلي Local host فقط. سنحتاج لتغيير هذا الإعداد والإشارة إلى عنوان IP خارجي يُمكن الاتصال عن طريقه بالخادوم الآخر.

استخدِم عنوان IP الخاص لخادومك إن كنتَ تستضيف الخواديم ضمن شبكة داخلية Private network. إن لم تكن لديك شبكة داخلية استخدم عنوان IP العمومي.

bind-address = your_database_IP 

احفظ الملف (Ctrl + O ثم زر Enter) ثم أغلقه بعد الانتهاء من تحريره (Ctrl + x).

نُعيد تشغيل قاعدة البيانات لأخذ التغييرات بالاعتبار:

sudo service mysql restart 

إعداد اعتماداتCredentials ووردبريس وقاعدة البيانات

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

سنغتنم هذه الفرصة أيضًا لاعتماد صلاحيات Privileges تختلف حسب الجهة التي يتصل منها المستخدِم. يُمكن مثلا أن نُنشئ مستخدمَيْن باسم "user" ولكن كل منهما مرتبط بمستضيف Host مختلف. يعني هذا أنه يُمكننا إنشاء مستخدِم مرتبط بخادوم قاعدة البيانات نفسه وتكون لديه صلاحيات واسعة ثم نستعمل نفس اسم المستخدم على خادوم الويب ونعطيه فقط الصلاحيات التي يحتاجها ووردبريس.

سيمنحنا هذا الإعداد القدرة على القيام بالأعمال الإدارية التي تتطلب صلاحيات واسعة عند الولوج إلى خادوم قاعدة البيانات وفي نفس الوقت نعطي لخادوم الويب الحد الأدنى من الصّلاحيات التي يحتاجها. تُعتبَر هذه السياسة جيدة من ناحية أمنية حيثُ تحمي جزئيًا خادوم قاعدة البيانات في حال تعرض خادوم الويب للاختراق.

للبدء في الإعداد نتّصل بخادوم قاعدة بيانات MySQL باستعمال الحساب الجذر وكلمة سر المدير عبر الأمر:

mysql -u root -p 

سيُطلَب منك إدخال كلمة سر المدير بعد تنفيذ هذا الأمر.

بعد الولوج نُنشئ قاعدة البيانات التي سيتّصل بها ووردبريس. اخترنا إعطاء اسم wordpress لقاعدة البيانات ليسهُل علينا التعرف عليها لاحقا:

CREATE DATABASE wordpress; 

الآن سننشئ مستخدِما جديدا لديه كامل الصلاحيات على قاعدة البيانات wordpress. سنسميه wordpressuser ثم نحدّد الجهات التي يُمكن منها استعمال هذا المُستخدِم بحيث يقتصر استعماله على الاتصالات من الخادوم نفسه عن طريق استخدام localhost أثناء تنفيذ الأمر، كما يلي:

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password'; 

في الأمر السّابق أنشأنا مستخدِما باسم wordpressuser مع كلمة السر password (اكتب كلمة سر خاصة بك مكانها) وحصرنا الجهات التي يُمكنه الاتصال منها بالمستضيف المحلي (localhost)، أي خادوم قاعدة البيانات نفسِه. نُكمل بإعطاء هذا المستخدِم كامل الصّلاحيات على قاعدة البيانات wordpress:

GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost'; 

يُمكن للمستخدم wordpressuser أن يُجري أي عملية على قاعدة البيانات wordpress بشرطِ أن يكون متصلا من خادوم قاعدة البيانات.

فلننشئ الآن الحساب المرافق الذي ستستخدمه الاتصالات القادمة من خادوم الويب. سنحتاج لعنوان IP خادوم الويب للقيام بهذا الأمر. يُمكننا اختيار أي اسم نراه مناسبا للمستخدِم، لكن من أجل الحفاظ على تجانس التجربة سنختار نفس الاسم أعلاه، مع تغيير اسم المُستضيف.

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

CREATE USER 'wordpressuser'@'web_server_IP' IDENTIFIED BY 'password'; 

يُنشِئ هذا الأمر مستخدِما باسم wordpressuser مع كلمة السر password وحصرنا الجهات التي يُمكنه الاتصال منها بخادوم الويب (حيثُ web_server_IP عنوان IP خادوم الويب).

الهدف هو أن تقتصر صلاحيات هذا المستخدم على صلاحيات يحتاجها ووردبريس للعمل وهي القراءة من قاعدة البيانات (SELECT) ، وحذف سطر من جدول (DELETE)، وإضافة سطر إلى جدول (INSERT) وتحديث البيانات الموجودة سلفا (UPDATE؛ ولكن ليس بإمكاننا تفعيل هذا الإعداد الآن. السبب أن هذه الصلاحيات لا تكفي للقيام ببعض العمليات، مثل تثبيت ووردبريس. وهو ما يعني أننا سنُفعِّل مؤقتا صلاحيات أوسع لهذا المستخدِم ثم نعود لنزعها منه وترك الصلاحيات الأربع التي ذكرناها سابقا فقط، وذلك بعد اكتمال التثبيت.

للمعلومة، الأمر المُستَخدم لتأمين الحساب والحد من صلاحياته هو التالي (سنعود له في ما بعد):

GRANT SELECT,DELETE,INSERT,UPDATE ON wordpress.* TO 'wordpressuser'@'web_server_ip'; 

قبل ذلك سننمح هذا المُستخدِم - مؤقتا - كامل الصلاحيات، وهو ما يجعله مطابِقا للمستخدِم السابق:

GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'web_server_ip';

سنعود لتغيير هذا الإعداد بعد تثبيت وضبط ووردبريس. إن كنتَ تستخدِم هذا الدّرس لمعرفة كيفية الفصل بين خادوم قادة البيانات وخادوم الويب ولا تحتاج لتثبيت ووردبريس؛ فيُمكنك تفعيل التقييدات على حساب المستخدِم الآن. يعتمِد الأمر على تطبيقك والصلاحيات الدنيا التي يُمكِنه العمل بها.

نحفظ التغييرات التي أجريناها على الصّلاحيات بكتابتها على القرص الصّلب:

FLUSH PRIVILEGES; 

يُمكن الآن الخروج من سطر أوامر MySQL عن طريق تنفيذ الأمر:

exit 

اختبِر الاتصالات المحلية والبعيدة

سنتأكد قبل المواصلة مع بقية الخطوات من إمكانية الاتصال باستخدام الحساب wordpressuser على كل من خادوم قاعدة البيانات وخادوم الويب.

جرِّب أولا الاتصال من الجهاز الذي توجد به قاعدة البيانات باستخدام الحساب الجديد:

mysql -u wordpressuser -p 

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

exit 

سجِّل الدخول إلى خادوم الويب لتجربة الاتصال عن بُعد.

ستحتاج لتثبيت بعض الأدوات على خادوم الويب حتى يُمكنك الولوج إلى قاعدة البيانات عن بعد. حدِّث النسخ المخبَّأة من الحزم ثم ثبّت أدوات عميل MySQL Client:

sudo apt-get update

sudo apt-get install mysql-client 

 

يُمكننا بعد اكتمال التثبيت تجربة الاتصال بخادوم قاعدة البيانات: 

mysql -u wordpressuser -h database_server_IP -p 

مُجدّدا، تأكد من استخدام نفس عناوين الشبكة التي استخدمتها أثناء إعداد خادوم قاعدة البيانات.

أدخِل كلمة السر عندما تُطلَب منك. ينبغي أن يظهر سطر أوامر MySQL، وهو ما يدل على نجاح الاختبار؛ يُمكنك بعدها الخروج من سطر أوامر MySQL.

للمزيد من التحقق يُمكنك تجربة الاتصال من خادوم ثالث للتأكد من عدم سماح خادوم قاعدة البيانات لك بالولوج. يعني هذا أنك تحققتَ من الولوج من الجهاز المحلي (خادوم قاعدة البيانات) ومن خادوم الويب، لكن لا يُسمَح بالولوج من خادوم آخر.

نُجرّب الولوج إلى قاعدة البيانات من خادوم غير مُصرَّح له بالدخول عن طريق عنوان IP:

mysql -u wordpressuser -h database_server_IP -p 

لن يُسمَح لك بالدخول، بدلا من ذلك تظهر رسالة خطأ كالتالي:

ERROR 1130 (HY000): Host '11.111.111.111' is not allowed to connect to this MySQL server 

يعني هذا أن الجهاز الذي تُريد الاتصال منه لا يُسمح له بالولوج إلى قاعدة البيانات، وهو بالضبط ما نريده.

إعداد خادوم الويب

نحتاج الآن بعد التأكد من إمكانية الاتصال من خادوم الويب إلى تثبيت البرامج الضرورية لهذا الخادوم ليقوم بعمله (تقديم صفحات الويب). سنضبُط كلًّا من Nginx وPHP وبقية العناصر الضرورية لخادوم الويب.

حدّثنا قبل قليل النسخ المخبّأة من الحزم على أوبنتو، وهو ما يعني أنه يُمكننا تثبيت الحزم التي نحتاجها مباشرة:

sudo apt-get install nginx php5-fpm php5-mysql 

بعد انتهاء تثبيت جميع الحزم، يمكن الانتقال إلى إعداد البرامج.

إعداد PHP

نبدأ بالأسهل، إعداد PHP.

افتَح ملف إعداد PHP حيثُ سنضبُط بعض القيم المتعلقة بphp-fpm، وهو المُكوِّن المسؤول عن تقديم المحتوى الديناميكي في PHP:

sudo nano /etc/php5/fpm/php.ini 

ابحَث عن مُعطى Parameter باسم cgi.fix_pathinfo. غالب الظن أنه سيكون مسبوقا بعلامة ";" (دلالةً على أن السّطر تعليق، أي أنه لا يُؤخذ في الاعتبار) وقيمته تساوي "1". سننزع علامة التعليق ونُعطيه القيمة "0". فيُصبِح السطر كالتالي:

cgi.fix_pathinfo=0 

هذا الإجراء أمني، حيثُ أخبرنا PHP بهذه الطريقة ألا يُحاول تخمين الملف الذي يبحث عنه المستخدِم إن لم يجد تطابقا تاما مع طلبه. يُمكِن لمستخدم سيء النية أن يستغل عدم ضبط هذا الإعداد لمحاولة تنفيذ سكربتات لا ترغب في تنفيذها على الخادوم.

احفَظ ثم أغلِق الملف.

ننتقل الآن إلى إعداد الطريقة التي يتواصل بها المعالج (Processor) الخاص بPHP مع خادوم الويب:

sudo nano /etc/php5/fpm/pool.d/www.conf 

ابحَث عن تعليمة Directive الاستماع، التي تأتي افتراضيا مضبوطة على 127.0.0.1:9000. بدلا من منفذ Port، سنستخدم مقبس Unix Socket ، Unix.

listen = /var/run/php5-fpm.sock 

احفَظ ثم أغلِق الملف بعد الانتهاء من تحريره.

نُعيد تشغيل معالج PHP لاعتماد القِيم الجديدة:

sudo service php5-fpm restart 

إعداد Nginx
ننتقل بعد إعداد PHP إلى إعداد خادوم ويب Nginx. نبدأ بنسخ ملف المستضيفات الافتراضية Virtual hosts الموجود سلفًا إلى ملف جديد سنعمل عليه، ونمنحه اسم نطاق الموقع. اخترنا "example.com" مثالاً للتوضيح هنا:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com 

الآن افتَح الملف الجديد:

sudo nano /etc/nginx/sites-available/example.com 

سنُعدّل الجزء الخاص بالخادوم داخل الملف (الأسطُر الموجودة بين الأقواس المعكوفة الموجودة بعد كلمة server). ابدأ بتعليق تعليمة الإنصات للمنفَذ رقم 80. سنغيِّر أيضًا المجلّد الجذر ونطلُب من Nginx تقديم ملف (فهرس) PHP بشكل افتراضي:

server {

listen 80;

root /var/www/example.com;

index index.php index.hmtl index.htm; 

 

نأتي الآن لتعليمة server_name التي سنُعدّلها حتى تستخدم اسم النطاق الذي نريد. تأكّد من ضبط تعليمة try_files بشكل صحيح (تمرير الطّلبات إلى PHP في حال عدم عثور خادوم ويب Nginx على الملف المطلوب) وكذلك من ضبط صفحات الخطأ.

server {

listen 80;

root /var/www/example.com;

index index.php index.hmtl index.htm;

server_name example.com;

location / {

try_files $uri $uri/ /index.php?q=$uri&$args;

}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/www;

} 

 

نحتاج قبل الانتهاء من إعداد Nginx لضبط معالجة PHP عن طريق استعمال جزء location لمُطابقة جميع طلبات PHP. في حال تعثر الحصول على الملف المطلوب نُجيب مباشرة بخطأ 404. نستخدم هنا أيضًا نفس المقبس الذي استخدمناه في PHP.

server {

listen 80;

root /var/www/example.com;

index index.php index.hmtl index.htm;

server_name example.com;

location / {

try_files $uri $uri/ /index.php?q=$uri&$args;

}

error_page 404 /404.html;

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/www;

}

location ~ \.php$ {

try_files $uri =404;

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;

include fastcgi_params;

}

}

 

 

بهذا ننتهي من إعداد الجزء المتعلّق بالخادوم. احفَظ ثم أغلق الملف.

تبّقى لنا حذف رابط ملف الإعداد الافتراضي ثم ربط المجلّد المفعَّل حيثُ توجد ملفات الموقع بملف إعدادات الخادوم الذي ضبطناه للتو:

sudo rm /etc/nginx/sites-enabled/default

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ 

 

أعد تشغيل Nginx لأخذ التعديلات بالاعتبار:

sudo service nginx restart 

ثبِّت ووردبريس

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

نزِّل آخر إصدار من ووردبريس (4.1.1 أثناء كتابة هذه السّطور) إلى مجلّدك الشخصي:

cd ~

wget https://ar.wordpress.org/wordpress-4.1.1-ar.tar.gz

 

استخرِج المفات عن طريق الأمر التالي الذي سينتُج عنه إنشاء مجلَّد باسم "wordpress" داخل مجلّدك الشخصي:

tar xzvf latest.tar.gz 

يأتي مع ووردبريس مثال لملف الإعداد ولكنه غير جاهز للاستعمال، سنُعيد تسميَّته حتى يُقرأ بشكل صحيح ثم نفتحه بمحرّر نصوص للتعديل عليه:

cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php

nano ~/wordpress/wp-config.php 

 

أدخِل القيم الصحيحة للتعليمات التالية، تذكَّر أن تستخدِم نفس عنوان IP الذي استخدمتَه أثناء تجرية الاتصال بقاعدة البيانات.

/** اسم قاعدة بيانات ووردبريس */

define('DB_NAME', 'wordpress');

/** اسم المستخدم لقاعدة البيانات */

define('DB_USER', 'wordpressuser');

/** كلمة المرور لقاعدة البيانات */

define('DB_PASSWORD', 'password');

/** عنوان خادوم قاعدة البيانات */

define('DB_HOST', 'database_server_ip'); 

 


 

احفَظ الملف بعد الانتهاء من تحريره ثم أغلقه. هذا هو الجزء الوحيد من الإعداد الذي يربط بشكل واضح بين خادوم الويب وخادوم قاعدة البيانات.

الآن سننشئ بنية المجلَّد التي أدرجناها خلال إعداد خادوم Nginx، في الجزء المعلَّم ب server في ملف الإعداد، حيثُ استخدمنا "exemaple.com" كمثال توضيحي؛ استخدِم اسم النطاق الذي اخترتَه خلال إعداد Nginx:

sudo mkdir -p /var/www/example.com 

تم ننسَخ الملفات والمجلَّدات الموجودة داخل مجلّد ووردبريس (wordpress/~) إلى المجلّد الجذر الذي أنشأناه للتّو:

sudo cp -r ~/wordpress/* /var/www/example.com 

كل الملفات الآن في المكان الذي يجب أن تكون فيه، تبقى لنا فقط تغيير أذونات Permissions ومُلكية المجلّد. ننتقل إلى مبدأ المستند Document root في خادوم الويب (المجلّد الأعلى مستوًى Top-level directory الذي سيبحث فيه خادوم الويب عن محتوى الموقع):

cd /var/www/example.com 

سنجعل من حساب خادوم الويب واسمُه www-data، مالكَ جميع الملفات في هذا المجلّد:

sudo chown -R www-data:www-data * 

سنحتاج لإذن الكتابة في ملفات الموقع حتى يُمكننا التعديل عليها. لذا سنُضيف الحساب العادي غير الجذر إلى مجموعة Group خادوم الويب ثم نُعطي لهذه المجموعة إذن التعديل على الملفات الموجودة في هذا المجلَّد:

sudo usermod -a -G www-data your_user

sudo chmod -R g+rw /var/www/example.com 

 

إعداد الموقع عبر واجهة الويب

كل ما تحتاجه الآن هو استكمال التثبيت عن طريق واجهة الويب. استخدِم المتصفّح للدخول إلى اسم نطاق الموقع (يُمكن أيضا استخدام عنوان IP العمومي):

http://example.com

يجب أن تظهر شاشة تثبيت ووردبريس والتي يجب أن تملأ حقول النموذج الموجود فيها بالمعلومات الضرورية:

_ووردبريس.thumb.png.47db56848b2b

 

استخدِم الحساب الذي أنشأتَه على ووردبريس أثناء ضبط إعداداته للولوج إلى لوحة التحكم:

_إلى_لوحة_تحكم_ووردبري

 

ستُنقَل بعدها إلى لوحة تحكم ووردبريس حيثُ يمكنك البدء في إعداد موقعك.

_تحكم_ووردبريس.thumb.png.1ee

 

قيّد أذون الولوج عن بعد إلى قاعدة البيانات

نعود الآن بعد الانتهاء من تثبيت ووردبريس إلى استرجاع بعض الأذونات التي منحناها لمستخدِم قاعدة البيانات البعيد.

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

انتبه أيضًا إلى أن بعض الإضافات تطلُب أذونا إضافية وابحث في كل إضافة للتأكد من ما تحتاجه مع اختيار الإضافات التي تطلُب أقل قدر من الصّلاحيات.

ادخُل على خادوم قاعدة البيانات ثم إلى MySQL باستخدام الحساب الجذر :

mysql -u root -p 

سيُطلب منك إدخال كلمة السر.

نفّذ الأمر التالي لإظهار أذون المستخدِم البعيد:

show grants for 'wordpressuser'@'web_server_IP';



+---------------------------------------------------------------------------------------------------------------------------+

| Grants for wordpressuser@xxx.xxx.xxx.xxx |

+---------------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'wordpressuser'@'xxx.xxx.xxx.xxx' IDENTIFIED BY PASSWORD '*5FD2B7524254B7F81B32873B1EA6D681503A5CA9' |

| GRANT ALL PRIVILEGES ON `wordpress`.* TO 'wordpressuser'@'xx.xxx.xxx.xxx' |

+---------------------------------------------------------------------------------------------------------------------------+

2 rows in set (0.00 sec) 

 

 

لا يعني إذن الاستعمال Usage في السّطر الأول أي صلاحيات فعلية، لذا لن نهتمّ به هنا. الصّلاحيات الموجودة في السّطر الثاني هي التي أعددناها في خطوة سابقة من هذا الدّليل حيثُ أعطينا المستخدِم wordpressuser كامل الصلاحيات (ALL PRIVILEGES في الجدول أعلاه) على قاعدة البيانات wordpress عند الاتصال عن بعد بخادوم قاعدة البيانات.

تتكون عملية تقييد الصّلاحيات من خطوتين. أولا ننزع كل الصّلاحيات الممنوحة حاليا للمستخدِم، وذلك عبر الأمر:

REVOKE ALL PRIVILEGES on wordpress.* FROM 'wordpressuser'@'web_server_IP'; 


 

عند طلب إظهار صلاحيّات المستخدِم الحالية سنُلاحظ اختفاء السّطر الثاني:


 

show grants for 'wordpressuser'@'web_server_IP';



+---------------------------------------------------------------------------------------------------------------------------+

| Grants for wordpressuser@xxx.xxx.xxx.xxx |

+---------------------------------------------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'wordpressuser'@'xxx.xxx.xxx.xxx' IDENTIFIED BY PASSWORD '*5FD2B7524254B7F81B32873B1EA6D681503A5CA9' |

+---------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec) 

 

 

ثانيا، نُحدّد الصلاحيات التي نرغب في منحها لحساب المستخدِم، وهي كما ذكرنا سالفا القراءة من قاعدة البيانات (SELECT) ، وحذف سطر من جدول (DELETE)، وإضافة سطر إلى جدول (INSERT) وتحديث البيانات الموجودة (UPDATE):

GRANT SELECT,DELETE,INSERT,UPDATE ON wordpress.* TO 'wordpressuser'@'web_server_ip'; 

تحقّق مجدّدا بعد تنفيذ الأمر السابق من صلاحيات المستخدِم وستلحَظ الصّلاحيات الجديدة.

بقي أن نطلُب من MySQL أخذ التغييرات التي أجريناها في الاعتبار عن طريق الأمر:

FLUSH PRIVILEGES; 

للخروج من سطر أوامر MySQL:

exit 

خاتمة

ينبغي أن يكون لديك بعد متابعة هذا الدرس فهمٌ جيّد لكيفية جعل تطبيقك يتفاعل مع قاعدة بيانات بعيدة. رأينا في الإعدادات أعلاه خطوات خاصة بووردبريس ولكن هذا لا يمنع من فهم الفكرة العامة لإعداد MySQL وضبط صلاحيات المستخدمين ثم تطبيقها حسب حاجة التطبيق الذي تُريد التعامل معه.

ترجمة -وبتصرّف- للمقال: How To Set Up a Remote Database to Optimize Site Performance with MySQL





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن