الويب العربي

الويب العربي (http://www.arabwebtalk.com/index.php)
-   إدارة وتشغيل السيرفرات (http://www.arabwebtalk.com/forumdisplay.php?f=80)
-   -   حصريا لـ AWT : كيفية التعامل مع ال Mysql باستخدام ال Shell (http://www.arabwebtalk.com/showthread.php?t=6152)

Ali Hamad 02-05-2005 07:59 AM

حصريا لـ AWT : كيفية التعامل مع ال Mysql باستخدام ال Shell
 
سم الله الرحمن الرحيم :
في البدايه ، شكرا للويب العربي لاعطائنا هذه الفرصه للتحاور وتناقش الاراء وتبادل الخبرات .
############ xD #######
## الموضوع : حصري ل AWT ، كيفية التعامل مع ال Mysql باستخدام ال Shell ، اقتراحات
## كاتب الموضوع : Ali Hamad
## الحقوق : يمنع نسخ الموضوع او نقله خارج AWT ولامانع من وضع روابط للموضوع .
## رقم الدرس : 1
## تحذير : انت تستخدم هذا الدرس على مسؤوليتك الخاصة فقط
########### xD #######

س1 : كيفيه انشاء قواعد بيانات باستخدام الشل ؟

إقتباس:

/usr/bin/mysqladmin creat DATABASENAME

حيث ان DATABASENAME هو اسم القاعدة التي تريد انشائها ، ولنفترض انها يوجد لدي اسم مستخدم في السيرفر باسم Ali .

اذن سيكون الامر :
إقتباس:

/usr/bin/mysqladmin creat Ali_xD

افتراضا ان اسم قاعدة البيانات xD .

ويوجد طريقه اخرى باستخدام شل ال Mysql ، وهي كالتالي :

في البداية الدخول على شل ال Mysql :

إقتباس:

mysql -u root -p

بعد ذلك ، انشاء القاعده بالامر :
إقتباس:

create database Ali_xD



س 2 : كيف ساقوم بانشاء اسم مستخدم للقاعدة للتحكم بها ؟

قبل كل شيء لابد ان تقوم بمعرفة باسورد الروت الخاص بقواعد البيانات :

إقتباس:

cat /root/.my.cnf

سيجلب لك باسورد الروت الخاص بقواعد البيانات .

## اذن كيف ساقوم بانشاء اسم مستخدم لقاعدة البيانات ؟
في البداية لابد من الدخول على محرر الشل الخاص بقواعد البيانات ،

إقتباس:

mysql -uroot -p

سيطلب منك باسورد الروت الخاص بقواعد البيانات ، تقوم بادخاله ومن ثم انتر ،

بعد ذلك ستقوم بكتابة الامر :
إقتباس:

use mysql;

للدخول على قاعدة البيانات التي سيتم العمل عليها ، لنقم الان بانشاء اسم مستخدم ولكن كما نعرف بانه سيكون لاسم المستخدم باسورد خاص به ، اذن لنحضر كلمة المرور الخاصه بالاسم المراد انشائه اولا ولنفترض باني اريد الباسورد AliHamad، اطبع الامر :
إقتباس:

SELECT PASSWORD('AliHamad');

سيظهر الباسورد كالتالي :
+-----------------------+
| PASSWORD ('AliHamad') |
+-----------------------+
| 5428fa3b0b637ab8 |
+-----------------------+

اذن سنستخدم الشفرة :
5428fa3b0b637ab8

سنقوم الان بانشاء اسم المستخدم بالباسورد الذي قمنا بانشائه :) ولنفترض بان اسم المستخدم سيكون ali_xD:
نطبع الامر التالي في شل ال mysql

إقتباس:

INSERT INTO user (Host, User, Password) VALUES ('localhost', 'Ali_xD', '5428fa3b0b637ab8');

قمنا الان باضافة اليوزر بنفس الباسورد الذي استنتجناه سابقا ،

س3 : كيف اقوم باضافة اسم المستخدم الى قاعدة البيانات التي قمت بانشائها سابقا ؟
نقوم الان بالدخول الى شل قواعد البيانات ،
mysql -uroot -p
نقوم بادخال باسورد الروت لقواعد البيانات
ومن ثم نقوم بالدخول الى القاعدة mysql
إقتباس:

use mysql;


بعد ذلك نقوم باضافة اسم المستخدم الى قاعدة البيانات مع الخصائص التي نريد اعطائها له :)

إقتباس:

INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv) VALUES ('localhost', 'Ali_xD', 'Ali_xD', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'n','Y', 'Y', 'Y', 'Y', 'Y');

قمنا الان باضافة اسم المستخدم بكلمة المرور الخاصه به الى قاعدة البيانات التي انشأناها سابقا ،

ويوجد طريقة اخرى ، ساقوم بذكرها في الاسفل :

1) الدخول على شل المايسقول :

إقتباس:

mysql -uroot -p

طباعة الامر :
إقتباس:

GRANT ALL PRIVILEGES ON DATABASENAME.* TO USER@"LOCALHOST" IDENTIFIED BY 'PASSWD' WITH GRANT OPTION;

تفصيل الامر :
DATABASENAME = اسم قاعدة البايانات .
USER = اسم المستخدم لقاعدة البيانات
LOCALHOST = الهوست الموجود عليه قاعدة البيانات وهو في الغالب localhost
PASSWD = كلمة المرور الخاصة بقواعد البيانات .

ولو رجعنا للمثال ، سيكون الامر :

إقتباس:

GRANT ALL PRIVILEGES ON Ali_xD.* TO Ali_xD@"%" IDENTIFIED BY 'AliHamad' WITH GRANT OPTION;

لنقم الان بالخروج من شل قواعد البيانات ،
exit
نطبع الامر التالي لحفظ التغييرات :
إقتباس:

mysqladmin reload

لقنم الان بالتاكد من ان اسم المستخدم اعلاه لايقوم الا بالدخول على قاعدة البيانات المحدده له بالخصائص التي اعطيناه اياها سابقا :

إقتباس:

mysql -uAli_xD -p

نقوم بطباعة الباسورد الخاص بالقاعدة Ali_xD " في المثال هي ( AliHamad) ، ومن ثم نقوم بطباعة الامر :

إقتباس:

use mysql;


ستظر النتيجه :

إقتباس:

ERROR 1044: Access denied for user: 'Ali_xD@localhost' to database 'mysql'
لانه لايمكن صلاحية الدخول في الاصل ، ولكن لنبطع الامر :

إقتباس:

use Ali_xD;


عند اذن سيقبل الدخول بالتاكيد لتلك القاعدة :) .

س4 : هل يوجد هناك امر للتاكد من الخصائص المعطاه لليوزر اعلاه بالدخول على تلك القاعدة فقط ؟

إقتباس:

نعم ، لنقم بالدخول على شل Mysql :
mysql -uroot -p

بعد ان تقوم بادخال باسورد قاعدة البيانات نقوم بطباعة الامر :
إقتباس:

SHOW GRANTS FOR 'Ali_xD'@'localhost';

ستظهر النتيجة :
+-------------------------------------------------------------------------------------------+
| Grants for Ali_xD@localhost |
+-------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'Ali_xD'@'localhost' IDENTIFIED BY PASSWORD '5428fa3b0b637ab8' |
| GRANT ALL PRIVILEGES ON `Ali_xD`.* TO 'Ali_xD'@'localhost' |
+-------------------------------------------------------------------------------------------+

كما نشاهد بان الخصائص فقط حددت لليوزر Ali_xD للقاعدة Ali_xD بالباسورد الذي قمنا باختياره :) .

####فاصل للراحة :)#####
# يانعمة السي بنل :) ####
####انتهى الفاصل :)#####

س5: هل بالامكان تغيير الباسورد الخاص باسم المستخدم ؟

بالتاكيد نعم بالطريقة التالية :

* الدخول على شل قواعد البيانات :
إقتباس:

mysql -uroot -p
* ادخل باسورد روت ال Mysql
ثم اطبع الامر :
إقتباس:

SET PASSWORD FOR 'Ali_xD'@'localhost' = PASSWORD('YourNewPasswd');

حيث ان ال YourNewPasswd هو باسوردك الجديد بدون تشفير ، ولنفترض اني اريد الباسورد الجديد يكون AWT ، اذن الامر سيكون :
إقتباس:

SET PASSWORD FOR 'Ali_xD'@'localhost' = PASSWORD('AWT');
الان نقوم بالخروج من ال شل قواعد البيانات ،
exit

ومن ثم لحفظ المتغيرات :
إقتباس:

mysqladmin reload

س6 : لدي سيرفر ، واريد ان اقوم بعمل بك لقواعد البيانات كل 6 ساعات لحظف المتغير فقط ؟
لا مشاكل :)
اطبع الاوامر :

إقتباس:

mkdir /backup/mysql
إقتباس:

chmod 0755 /backup/mysql
إقتباس:

vi /scripts/mysqlbackup
بعد كذا راح تحرر الملف ، وتكتب الاسطر التاليه

إقتباس:

#!/bin/bash
/usr/bin/rsync -arzgopu /var/lib/mysql /backup/mysql

بعدين
:wq
انتر
اكيد راح تعطي الملف تصريح 755
إقتباس:

chmod 755 /scripts/mysqlbackup

طبعا تبي تضيف كرون جوب على اساس يتنفذ الملف كل 6 ساعات مثلا
اطبع الامر :

إقتباس:

echo "0 */6 * * * /scripts/mysqlbackup" >> /var/spool/cron/root

وصار عندك بك اب منفصل لقواعد البيانات في مجلد اخر كل 6 ساعات لكل قواعد البيانات لاخذ المتغيرات فقط ، مع العلم بانه يمكن اخذ بك اب بطريقة

إقتباس:

mysqlHotCopy or mysqldump -u - p --all-database > Any.sql

س7 : لا استخدم السي بنل ، ونسيت كلمة المرور الخاصة ب Root ال Mysql ، كيف اقوم باستعادة الباسورد او تغيره ؟

1/ في البداية ايقاف كل عمليات قواعد البيانات على السيرفر :
إقتباس:

killall -9 mysqld
إقتباس:

/etc/init.d/mysql stop
إقتباس:

kill 'cat /var/lib/mysql/File.pid'

file.pid = hostname.pid كمثال :
server.arabwebtalk.pid

## بداية فاصل ##
والله الي توقفت ال mysql نهائي :)
## نهاية فاصل ##

التاكد من انه لايوجد اي عملية mysql تعمل على السيرفر :

إقتباس:

ps -auxww | grep mysql

ماراح يظهر لك غير سطر واحد ، دليل ان كل العمليات الخاصه بال mysql توقفت .
بعد كذا راح تسوي ملف صغير نفترض ان اسمه :
/home/xd
اذن :
vi /home/xd
بعد كذا تحط فيه الامر هذا :
إقتباس:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('YourNewPasswd');
بعدين حفظ للملف
طبعا تستبدل كلمة
YourNewPasswd
بكلمة المرور الجديده ، طبعا بدون تشفير ، مثلا ابي الباسورد يكون AWT ، رايح يكون الامر :

إقتباس:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('AWT');

بعد كذا راح تكتب الامر هذا في الشل :
إقتباس:

/usr/bin/mysqld_safe --init-file=/home/xd

لاحظ امتداد الملف ، اذن ستعمل قواعد البيانات من جديد بعد تغير الباسورد الى باسوردك الجديد
ومن ثم تحذف الملف
إقتباس:

rm /hom/xd -rf

** لو تستخدم السي بنل ، تقدر من ال WHM وايضا لو نسيت الباسورد تقدر تطلع الناتج :
إقتباس:

cat /root/.my.cnf

لكن لو اتبعت الطريقة اعلاه ، لازم بعد كذا تسوي الامر هذا :
nano -w /root/.my.cnf
او اي محرر ثاني ،
وتغير الباسورد القديم بالباسورد الي اخترته ، وبعدها تطبق الامر :
إقتباس:

mysqladmin reload

س8 : كيف اقوم بعمل repair او optimize او analyze لقاعدة معينه او كل القواعد على السيرفر بالشل ؟

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

/usr/bin/mysqlcheck -r --databases

لعمل ريبير لكل القواعد في السيرفر :

إقتباس:

/usr/bin/mysqlcheck -r --all-databases

لعمل ابتومياز لقاعدة معينة :

إقتباس:

/usr/bin/mysqlcheck -o --databases

لعمل ابتومايز لكل القواعد :

إقتباس:

/usr/bin/mysqlcheck -o --all-databases


في النهاية :
انا اتبعت في الشرح طريقة معقده ، والا كان هناك اوامر اخرى يمكن تطبيقها مثل Mysqlaccess و GRANT في ال Mysql شل ، ولكن كل الغاية في فهم الطريقة التي تعمل بها قواعد البيانات ،

ملاحظة :
كل الاوامر الي كتبت اعلاه يبي لك ، تفتح ملف نصي وتقراها من اليسار الى اليمين CTRL + Shift " اليسار " .

اخر تعديل في الموضوع :
كانت بتاريخ 11/8/1426 هـ
صادق التحايا ،
علي حمد .

3rbhost 02-05-2005 12:43 PM

ما شاء الله
الصراحه شرح اكثر من رائع ابو حمد
الله يعطيك الف عافية والصراحه شرح ما يطلع إلا من خبير واستاذ :)

تقبل تحياتي

zesty4ever 02-05-2005 09:08 PM

حقيقي شرح وافي وقيّم للغاية

مشكور كتير أخي ... وجزاك الله كل خير

ونحن في انتظار المزيد من هذه المشاركات والمواضيع الرائعة :)

ابوعبدالرحمن 02-05-2005 09:13 PM

جزاك الله خير على هالشرح الوافي .

وان شاء الله نستفيد منه كلنا :)

support 02-05-2005 10:50 PM

مشكور على الشرح الوافي و السهل
والله يعطيك العافية .

آكت نت 03-05-2005 05:35 AM

مشكور أخ على على الموضوع الرائع
. فعلا نفتقد لمثل هذه المواضيع

Ali Hamad 03-05-2005 07:04 AM

إقتباس:

اقتباس من مشاركة 3rbhost
ما شاء الله
الصراحه شرح اكثر من رائع ابو حمد
الله يعطيك الف عافية والصراحه شرح ما يطلع إلا من خبير واستاذ :)

تقبل تحياتي

شكرا اخوي احمد على الاطراء ، وياهلا :)

Ali Hamad 03-05-2005 07:04 AM

إقتباس:

اقتباس من مشاركة zesty4ever
حقيقي شرح وافي وقيّم للغاية

مشكور كتير أخي ... وجزاك الله كل خير

ونحن في انتظار المزيد من هذه المشاركات والمواضيع الرائعة :)

لاعدمتك يالغلا ، وانشاء الله القادم يكون احسن باذن الله ، اذا توفر الوقت :(

Ali Hamad 03-05-2005 07:06 AM

إقتباس:

اقتباس من مشاركة ابوعبدالرحمن
جزاك الله خير على هالشرح الوافي .

وان شاء الله نستفيد منه كلنا :)

هذا الي اتمناه :) ، الفايدة للجميع .

Ali Hamad 03-05-2005 07:07 AM

إقتباس:

اقتباس من مشاركة support
مشكور على الشرح الوافي و السهل
والله يعطيك العافية .

يعافيك ربي .
شكرا لك على مرورك ، انشاء الله انك استفدت من الدرس .

Ali Hamad 03-05-2005 07:08 AM

إقتباس:

اقتباس من مشاركة آكت نت
مشكور أخ على على الموضوع الرائع
. فعلا نفتقد لمثل هذه المواضيع

العفو اخوي ، وياهلا ،

الشريف.نت 03-05-2005 03:21 PM

شرح أكثر من رائع أخوي علي حمد

ولكن

لماذا نستخدم الشيل في انشاء قاعدة البيانات ؟

أو
ماهو الشيء الاضافي الذي يجعلنا نستخدمه مع وجود phpmyadmin

وشكرا لك

الرّاسم 04-05-2005 06:58 AM

درس من العيار الثقيل ياعلي ماشاء الله عليك

ألف شكر على هالمجهود الكبير
معلومات جديده وهامه لكل من يدير سيرفر اتمنى الشباب يجربون الشرح ويكون فيه نقاش حول الموضوع عشان تكون الفائده مضاعفه

حفظت الصفحة :)
مرجع مهم الواحد اكيد راح يحتاجه

تحياتي

Ali Hamad 04-05-2005 12:52 PM

إقتباس:

اقتباس من مشاركة الشريف.نت
شرح أكثر من رائع أخوي علي حمد

ولكن

لماذا نستخدم الشيل في انشاء قاعدة البيانات ؟

أو
ماهو الشيء الاضافي الذي يجعلنا نستخدمه مع وجود phpmyadmin

وشكرا لك

عزيزي : كمدير سيرفر ، لابد ان تعتمد على نفسك في كيفية ادارة السيرفر بالشل بدون الرجوع الى اي سكربت اخر ، لنفترض جدلا انك تعرضت لمشكلة ما في ال PhpMyAdmin او ثغرة امنية خطيرة " كالتي حدثت قبل 3 -4 اشهر تقريبا " ؟ هل ستستمر في دعم مواقعك والتعامل مع ال Mysql بدون الحاجة لل PhpMYadmin او ستقوم بالانتظار حتى حل المشكلة ؟!

الشيء الاضافي :
بان ال PhpMyAdmin ماهو الا مدير لقواعد البيانات " كالسي بنل / WHM في ادارة سيرفرات اللينكس " اي ان الاساس هو Mysql shell وليس ال phpmyadmin ، وتتركز فائدته في 3 خطوات :
1/ في معرفة حالة ال Mysql امنيا في تطبيق اي امر بسهولة في ال Mysql shell ومعرفة صلاحيات كل يوزر بدل البحث في كل موقع وفي كل صلاحية لكل قاعدة .
2/ سرعة التحكم وانجاز الطلب ، بعكس السي بنل و ال PhpMyadmin ، وانا اعني هنا بان ال mysql shell او ال shell آمن واضمن في التحكم ، حيث ان السي بنل او ال phpmyadmin ماهي الا سكربتات معرضة للاختراق او اكتشاف ثغرات بها غير امنه ، كما انه سيرفرات اليونكس لاتعني بالضرور Cpanl / WHM فكثير من زملاء العمل ، يعملون على سيرفرات بدون لوحات تحكم ، وايضا انا في المكتب ، استعمل سيرفر داخلي بقواعد بيانات ، ومن الاستحالة ان اقوم بتركيب السي بنل على سيرفر LocalHost لانه في الاساس لايوجد رخصه له حتى الان .
3/ الهدف من الدرس ليس فقط انشاء او اضافة اسم مستخدم لقاعدة ، انما الهدف هو فهم عمل تلك السكربتات اساسا في تطبيق الاوامر هذه ، كمدير سيرفر ، لابد ان تكون ملم بمعظم هذه الافكار لكي تقوم باستنتاج بعض الطرق السريعة لانجاز عملك او حل بعض المشاكل بدون الرجوع الى السي بنل او ال phpmyadmin فقط تتعرض يوما ما لادارة نظام لايحوي كنترول بنل ، والتوسع اكثر في كل مايتعلق بسيرفرك ، بالتأكيد ستكون ال PhpMyAdmin او ال Whm مفضلة للمبتدئين ولكن الكثير من زملاء العمل ، لايجيد 100 % التعامل مع ال Whm وال PhpMyAdmin ، ولكن يستطيع عمل كل ماذكر اعلاه بالشل ، وهذا هو الصحيح في نظري ، لان ادارة النظام تعني اجادة التحكم الكامل به ، وليس الاعتماد ""@@ الكلي ""@@ على السكربتات .

شكرا لك على قرائتك للموضوع وعلى مداخلتك مره اخرى .

Ali Hamad 04-05-2005 01:05 PM

إقتباس:

اقتباس من مشاركة الرّاسم
درس من العيار الثقيل ياعلي ماشاء الله عليك

ألف شكر على هالمجهود الكبير
معلومات جديده وهامه لكل من يدير سيرفر اتمنى الشباب يجربون الشرح ويكون فيه نقاش حول الموضوع عشان تكون الفائده مضاعفه

حفظت الصفحة :)
مرجع مهم الواحد اكيد راح يحتاجه

تحياتي

استاذي واخوي الكبير :)

شكرا لك على مداخلتك في الموضوع ، وشرف كبير لزيارتك وانشاء الله انه حقق الفائدة المرجوة . بالتاكيد تشرفت بان يكون احد مواضيعي في مفضلة استاذ واخ عزيز اكن له كل التقدير والاحترام .

اتفق معك في ان النقاش في الموضوع يثريه بالتاكيد وكنت اتمنى ان يقوم احد الاخوة بتجربة الشرح واعطائ ملاحظاته لاثراء الموضوع بكمية اكبر من المعلومات .

شكرا لك مره اخرى ، ويامراحب .

الشريف.نت 07-05-2005 03:17 PM

يعطيك العافية أخوي علي حمد
ماقصرت كفيت ووفيت

تحياتي الحارة :d لك

index 24-05-2005 09:43 PM

السلام عليكم


في البداية أشكرك أخي العزيز جزيل الشكر والامتنان على هذا الدرس الدسم, ولدي سؤال وأود أن أطرحه عليك وأتمنى أن أعرف الاجابه عليه

أريد أن أنسخ مثلاً قاعدة بيانات موجوده اسمها vb وأريد نسخ هذه القاعدة بكامل محتوياتها في قاعدة بيانات جديده اسمها vb3 كيف يتم عمل هذه الطريقه ؟؟

وأتمنى أن نرى دروس أكثر عن التعامل مع الـShell في القريب العاجل

اندكس

بـــوســـارة 24-05-2005 10:04 PM

ما شاء الله عليك اخوي

الف شكر على هذا الموضوع المتميز

تحياتي

Ali Hamad 29-05-2005 02:12 AM

إقتباس:

اقتباس من مشاركة index
السلام عليكم


في البداية أشكرك أخي العزيز جزيل الشكر والامتنان على هذا الدرس الدسم, ولدي سؤال وأود أن أطرحه عليك وأتمنى أن أعرف الاجابه عليه

أريد أن أنسخ مثلاً قاعدة بيانات موجوده اسمها vb وأريد نسخ هذه القاعدة بكامل محتوياتها في قاعدة بيانات جديده اسمها vb3 كيف يتم عمل هذه الطريقه ؟؟

وأتمنى أن نرى دروس أكثر عن التعامل مع الـShell في القريب العاجل

اندكس

لاشكر على واجب عزيزي ، وتشرفت بمرورك :

بخصوص نسخ قاعدة بيانات اسمها vb ونقل محتواها الى قاعده اسمها vb3 :

اولا نسخ القاعده باسم vb :
الامر :

mysqldump -uUser -p DataBaseName > files.sql

توضيح الامر :
User = اسم المستخدم للقاعدة
DataBaseName = اسم قاعدة البيانات : اياكانت على الصيغة ali_vb
files.sql = اي اسم تريد

** سيطلب منك كلمة المرور الخاصة باسم المستخدم للقاعدة ، قم بادخاله فقط .
بكذا صار عندك نسخة من القاعده ،

ثانيا : نقل محتوى القاعدة الي قاعدة اسمها vb3

mysql -uUSER -p DatabaSeName < files.sql

توضيح الامر :
User = اسم المستخدم للقاعدة
DataBaseName = اسم قاعدة البيانات
files.sql = اي اسم تريد
** سيطلب منك كلمة المرور الخاصة باسم المستخدم للقاعدة ، قم بادخاله فقط .

وبكذا قمت بزراعة قاعد البيانات في قاعد اخرى بنفس محتواها .

تحياتي ،،
Ali Hamad

Ali Hamad 29-05-2005 02:13 AM

إقتباس:

اقتباس من مشاركة بـــوســـارة
ما شاء الله عليك اخوي

الف شكر على هذا الموضوع المتميز

تحياتي


تشرفت بمرورك ،

تحياتي ،

Ali Hamad


جميع الأوقات بتوقيت مكة المكرمة. الساعة الآن » 06:13 AM.

Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © ArabWebTalk.Com 2004-2012