المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : [درس مفصل]:[كيفية التعامل مع ال Mysql باستخدام ال Shell]



salima
11-02-2013, بتوقيت غرينيتش 01:02 AM
http://www.dzbatna.com/images/smilies/bleh.gif السلام عليكم

درس مفصلنا اليوم انتو عارفينه من عنوانه http://www.dzbatna.com/images/smilies/shiny.gif
وارجو تثبيت setupه http://www.dzbatna.com/images/smilies/nosweat.gif

بسم الله نبدا

\ كيفيه انشاء قواعد بيانات باستخدام الشل ؟
رمز Code:
/usr/bin/mysqladmin creat DATABASENAME
حيث ان DATABASENAME هو اسم القاعدة التي تريد انشائها ، ولنفترض انها يوجد لدي اسم مستخدم في السيرفر SERVER باسم Ali .

رمز Code:
/usr/bin/mysqladmin creat Ali_xD
افتراضا ان اسم قاعدة البيانات xD .

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

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

رمز Code:
mysql -u root -p
بعد ذلك ، انشاء القاعده بالامر :

رمز Code:
create database Ali_xD
س 2 : كيف ساقوم بانشاء اسم مستخدم للقاعدة للتحكم بها ؟

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


رمز Code:
cat /root/.my.cnf


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

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

رمز Code:
mysql -uroot -p
سيطلب منك باسورد الروت الخاص بقواعد البيانات ، تقوم بادخاله ومن ثم انتر ،

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

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


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

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

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


رمز Code:
INSERT INTO user (Host, User, Password) VALUES ('localhost', 'Ali_xD', '5428fa3b0b637ab8');

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

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

رمز Code:
use mysql;

بعد ذلك نقوم باضافة اسم المستخدم الى قاعدة البيانات مع الخصائص التي نريد اعطائها له
رمز Code:
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) الدخول على شل المايسقول :

رمز Code:
mysql -uroot -p
طباعة الامر :

رمز Code:
GRANT ALL PRIVILEGES ON DATABASENAME.* TO USER@"LOCALHOST" IDENTIFIED BY 'PASSWD' WITH GRANT OPTION;
تفصيل الامر :
DATABASENAME = اسم قاعدة البايانات .
USER = اسم المستخدم لقاعدة البيانات
LOCALHOST = الهوست الموجود عليه قاعدة البيانات وهو في الغالب localhost
PASSWD = كلمة المرور الخاصة بقواعد البيانات .

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



رمز Code:
GRANT ALL PRIVILEGES ON Ali_xD.* TO Ali_xD@"%" IDENTIFIED BY 'AliHamad' WITH GRANT OPTION;

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

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

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

رمز Code:
use mysql;
ستظر النتيجه :

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

رمز Code:
use Ali_xD;
عند اذن سيقبل الدخول بالتاكيد لتلك القاعدة .

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


نعم ، لنقم بالدخول على شل Mysql :

رمز Code:
mysql -uroot -p


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


رمز Code:
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: هل بالامكان تغيير الباسورد الخاص باسم المستخدم ؟

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

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

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


رمز Code:
SET PASSWORD FOR 'Ali_xD'@'localhost' = PASSWORD('YourNewPasswd');

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


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

ومن ثم لحفظ المتغيرات :

رمز Code:
mysqladmin reload

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

رمز Code:
mkdir /backup/mysql

رمز Code:
chmod 0755 /backup/mysql

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



رمز Code:
#!/bin/bash /usr/bin/rsync -arzgopu /var/lib/mysql /backup/mysql

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

رمز Code:
chmod 755 /scripts/mysqlbackup

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


رمز Code:
echo "0 */6 * * * /scripts/mysqlbackup" >> /var/spool/cron/root

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



رمز Code:
mysqlHotCopy or mysqldump -u - p --all-database > Any.sql

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

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


رمز Code:
killall -9 mysqld



رمز Code:
/etc/init.d/mysql stop

رمز Code:
kill 'cat /var/lib/mysql/File.pid'

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

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

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


رمز Code:
ps -auxww | grep mysql

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


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


رمز Code:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('style');


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


رمز Code:
/usr/bin/mysqld_safe --init-file=/home/xd

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


رمز Code:
rm /hom/xd -rf

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





رمز Code:
cat /root/.my.cnf

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


رمز Code:
mysqladmin reload

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

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


رمز Code:
/usr/bin/mysqlcheck -r --databases

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



رمز Code:
/usr/bin/mysqlcheck -r --all-databases

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




رمز Code:
/usr/bin/mysqlcheck -o --databases

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



رمز Code:
/usr/bin/mysqlcheck -o --all-databases


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


تعبت http://www.dzbatna.com/images/smilies/nosweat.gif

وكذا خلصنا انتظرو المزيد واتمنا تكونو استفدتو

منقول من الويب العربي http://www.dzbatna.com/images/smilies/bleh.gif




https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى