بنام خدا
انواع نسخه های My sql:
Server
RPMs:جهت کلاینتها میباشد.پس از نصب نسخه سرور استفاده از یک کلاینت جهت تست ارتباط خالی از لطف نیست.
اولین موضوع مهم اینکه میباید پیش از ایجاد database ها حتما Mysql خود را start نمائیم و البته پیش از آن توسط این دستور فرآیند boot time را صورت دهیم.
root@bigboy tmp]# chkconfig mysqld on
این دستورات تیز جهت stop یا start یا restart سرویس بکار میروند:
[root@bigboy tmp]# service mysqld start
[root@bigboy tmp]# service mysqld stop
[root@bigboy tmp]# service mysqld restart
نکته مهم آنکه restart نمودن سرویس mysql پس از هر بار تغییرات در آن ضروری است.
و جهت تست mysql خود:
[root@bigboy tmp]# pgrep mysqld
فابل اصلی پیکر بندی mysql:
محل data base ها:
بطور مثال جهت پایگاه داده با نام azizi که ایجاد نموده ایم فابل آن در مسیر زیر تشکیل میگردد:
کاربر root:
هنگامی کـه سـرویـسدهـنده MySQL نصب میشود، بـطور پیشگزیده، هیچ کلمه عبوری برای کاربر ریشه که مدیر سرویسدهنده میباشد، در نظر گرفته نشدهاست. به عنوان مدیر سرویسدهنده، نخستین و تنها تنظیم ضروری که باید بر روی سرویسدهنده MySQL انـجـام دهید، ایجاد یک کلمه عبور برای کاربر ریشه میباشد. به این منظور، باید با استفاده از کنسول سرویسدهـنده، بـه آن وارد شـوید. از این پـس نـیز بـرای انجام تمامی کارها و امور مدیریتی خود بر روی سرویسدهنده مانند ایجاد و مدیریت بانکهای اطلاعاتـی، ایـجاد کـاربران جدید، تنظیم مجوزهای دسـترسـی و غیره از این کنسول استفاده خواهید کرد که جلوتر به آنها خـواهیم پرداخت. برای ورود به کنسول سرویسگیرنده MySQL، دستور زیر را وارد کنید:
# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 823 to server version: 4.0.23_Debian-4-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
mysql> grant all privileges on *.* to root@localhost identified by 'password';
Query OK, 0 rows affected (0.19 sec)
mysql>
در دسـتـور بـالا به سـرویسدهـنده مـیگوییم کـه تـمامی مـجوزهای دسترسی را به تمامی بانکهای اطلاعاتی، به کاربر root که از ماشین محلی به سیستم مـتـصل مـیشـود و دارای کلمه عبور password است، اعطاء کن. توجه داشته باشید که بجای password بـایـد کلمه عبور مورد نـظـرتـان را برای کاربر ریشه، وارد نمایید. با تایپ دستور quit از کنسول خارج شده و به پوسته فرمان باز خواهید گشت.
برای ایجاد کاربران جدید و دادن مجوز بر روی یک بانک اطلاعاتی:
mysql> grant all privileges on mydatabase.* to user@localhost identified by 'password';
برای نمایش بانکهای اطلاعاتی موجود بر روی سیستم:
mysql> show databases;
برای نمایش جداول موجود بر روی یک بانک اطلاعاتی خاص:
mysql> use mydatabase;
mysql> show tables;
برای حذف یک بانک اطلاعاتی:
mysql> drop database mydatabase;
برای حذف یک جدول موجود بر روی یک بانک اطلاعاتی خاص:
mysql> use mydatabase;
mysql> drop table mytable;
برای حذف دسترسی یک کاربر بر روی یک بانک اطلاعاتی خاص:
mysql> revoke all privileges on mydatabase.* from user@localhost;
هـمانند آنچه که در پـوسـته فـرمان سیستم دیدیم، کنسول MySQL نیز دستورات تایپ شده را در یک تاریخچه نگهداری میکند. با استفاده از کلیدهای مکان نما در این کنسول، میتوانید بین این دستورات حرکت کرده و در صورت لزوم از آنها استفاده کنید.
مانند کاربر sa در ms sqlserver یا نقشی مانند administrator در ویندوز دارد و جهت تغییر پسورد آن:
[root@tmp bigboy]# mysqladmin -u root password new-password
کاربران با سطح دسترسی محدودتر هم میتوان ایجاد نمود.
CLI:command line interpreter
خط فرمان mysql مخصوص به خود است و توسط دستور زیر قابل اجراست:
mysql -u root -p
-u:جهت نام کاربری
-p: جهت رمز عبور
پس از این دستور وارد خط فرمان mysql میشویم:
mysql>
ایجاد یک پایگاه داده با نام azizi:
mysql> create database azizi;
Query OK, 1 row affected (0.00 sec)
نکته : تقریبا تمامی دستورات نیاز به semi-colon دارند.
حذف یک database با نام azizi :
mysql> drop database salesdata;
Query OK, 0 rows affected (0.00 sec)
نکته: گاهی اوقات پس از حذف یک پایکاه داده فایل های دادهای آن در مسیر موجود باز هم دیده میشوند هرچند ارتباط با آن قطع شده است.علت این مسئله تغییر در حق دسترسی کامل به آن پایگاه داده توسط کاربرroot بوده است.
Granted full privileges to the database
در این مواقع بهترین راه حل حذف دستی پایگاه داده در مسیر موجود توسط دستورات لینوکس میباشد.
نکته : قبل از حذف دستی یک پایگاه داده توسط دستورات لینوکس حتما مطمئن شوید که موتور سرویسگر mysql خود را stop نموده اید:
[root@bigboy tmp]# service mysqld stop
محدودیت دسترسی جهت کاربران غیر Root :
تمامی کاربران در پایگاه داده ای با نام mysql ذخیره میشوند.جهت اضاف نمودن یک کاربر sql به این database:
sql> grant all privileges on database.* to username@"servername" identified by 'password';
مثال:ایجاد یک کاربر با نام azizi در database با نام barboddata سرور localhost و با پسورد "123456"که حق کاربری با این پایگاه داده را با تمامی حق و حقوق خواهد داشت:
sql> grant all privileges on barboddata.* to azizi@"localhost" identified by '123456';
گام بعدی پس از این دستور فلش کردن کاربر است:
The next step is to write the privilege changes to the mysql.sql database using the flush privileges command.
sql> flush privileges;
دستورات ایجاد Table توسط اجرای یک script :
[root@bigboy tmp]# mysql -u root -p salesdata < create_mysql.script
Enter password:
[root@bigboy tmp]#
مشاهده پایگاه داده:
[root@bigboy tmp]# mysql -u mysqluser -p salesdata
دستور زیر لیس همه پایگاههای داده را نمایش میدهد:
mysql> show databases;
+-----------+
| Database |
+-----------+
| salesdata |
+-----------+
1 row in set (0.00 sec)
mysql>
مشاهده جداول اطلاعاتی درون یک پایگاه داده:
mysql> use salesdata; تغییر پایگاه داده--------------------------->
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables; دستور مشاهده جداول---------------------------->
| Tables_in_salesdata |
+---------------------+
| test |
+---------------------+
1 row in set (0.00 sec)
mysql>
مشاهده ساختار جداول یک پایگاه داده:
مثال: مشاهده جدول test در پایگاه داده
mysql> describe test;
+---------------+--------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+------------+----------------+
| num | int(11) | | PRI | NULL | auto_increment |
| date_modified | date | | MUL | 0000-00-00 | |
| name | varchar(50) | | MUL | | |
| description | varchar(75) | YES | | NULL | |
+---------------+--------------+------+-----+------------+----------------+
6 rows in set (0.00 sec)
mysql>