آموزش MYSQL بخش دوم
بخش دوم
مشاهده محتویات یک جدول اطلاعاتی
در این مثال ردیف اول جدول را برای مشاهده ذکر نموده ایم:
mysql> select * from test limit 1;
پیکربندی موارد کاربردی تحت پایگاه داده جهت اتصال application های تحت زبان perl یا php .
Table :Required PHP and Perl RPMs for MySQL Support
RPM |
RPM |
php-mysql |
MySQL database specific support for PHP |
perl-DBI |
Provides a generic Perl interface for interacting with relational databases |
perl-DBD-MySQL |
MySQL database specific support for Perl |
چگونه پسورد root را در mysql خود recover(اگر فراموش نموده ایم)یا تغییر دهیم؟
1.stop نمودن my sql:
[root@bigboy tmp]# service mysqld stop
Stopping MySQL: [ OK ]
[root@bigboy tmp]#
2.start نمودن mysql در وضعیت safe mode و با حالتی که در وضعیت عدم دسترسی به جداول برای کاربران مجاز باشیم:
[root@bigboy tmp]# mysqld_safe --skip-grant-tables --skip-networking &
[1] 13007
[root@bigboy tmp]# Starting mysqld daemon with databases from /var/lib/mysql
[root@bigboy tmp]#
توجه : در لینوکس های فدورا دستورات مزبور با دیگر لینوکس ها کمی متفاوت است .برای بررسی تفاوتها میتوان به لینک ذیل مراجعه نمود:
Note: In Fedora Core 3 and earlier the mysqld_safe command was named safe_mysqld and the general procedure for password recovery was different. This difference is outlined in Appendix III, "Fedora Version Differences".
3.اکنون بدون پسورد میتوان وارد وضعیت mysql command پایگاه داده شد:
[root@bigboy tmp]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.16
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
4.اکنون با دستور زیر پسورد را به itpage تغییر میدهیم:
mysql> use mysql;
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> UPDATE user SET Password=PASSWORD("itpage") WHERE User="root";
Query OK, 1 row affected (0.00 sec)
Rows matched: 2 Changed: 1 Warnings: 0
mysql>
5.از mysql خروج کرده عمل restart آنرا انجام میدهیم:
mysql> exit
Bye
[root@bigboy tmp]# service mysqld restart
STOPPING server from pid file /var/run/mysqld/mysqld.pid
051224 17:24:56 mysqld ended
Stopping MySQL: [ OK ]
Starting MySQL: [ OK ]
[1]+ Done mysqld_safe --skip-grant-tables --skip-networking
[root@bigboy tmp]#
Backup گیری از پایگاه داده mysql:
فرمت دستوری این عملیات به صورت زیر میباشد:
mysqldump --add-drop-table -u [username] -p[password] [database] > [backup_file]
بطور مثال دستور زیر عمل backup گیری از پایگاه داده test که قبلا کاربر aziziبا پسورد 123456 برای تعریف شده است را انجام میدهد:
[root@bigboy tmp]# mysqldump --add-drop-table -u azizi \
-p123456 test > /tmp/salesdata-backup.sql
نکات:1) به عدم فاصله بین –p و عدد پسورد یعنی 123456 توجه کنید.
2) هنگام عمل تهیه پشتیبان هیچگاه database با نام mysql را از یاد مبرید زیرا حاوی تمامی اطلاعات دسترسی کاربران تعریف شده در پایگاه داده میباشد.
Backup گیری از پایگاه داده mysql:
mysql -u [username] -p[password] [database] < [backup_file]
بطور مثال برای همان پایگاه داده backup گرفته شده در مثال قبل:
[root@bigboy tmp]# mysql -u azizi –p123456 salesdata \
< /tmp/salesdata-backup.sql
نکته : حتما پایگاه داده mysql را از یاد مبرید زیرا حاوی تمامی اطلاعات دسترسی کاربران تعریف شده در پایگاه داده میباشد بهتر است آنرا هم restore نمایید.
Backupگیری از یک یا چند Table خاص:
بطور مثال در دستور زیر اطلاعات دو جدول phpbb_users و phpbb_themes از پایگاه داده با نام test-old به ترتیب مسیرهای /tmp/test-old-db-users.sql و مسیر /tmp/test-old-db-themes.sql روی هارد دیسک export شده و سپس در پایگاه داده با نام new-test در جداولی با همان نامهای قبلی import میشوند.
mysql> use test-old;
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> SELECT * INTO OUTFILE '/tmp/test-old-db-users.sql' FROM phpbb_users;
Query OK, 1042 rows affected (0.03 sec)
mysql> SELECT * INTO OUTFILE '/tmp/test-old-db-themes.sql' FROM phpbb_themes;
Query OK, 1038 rows affected (0.03 sec)
mysql> use new-test;
Database changed
mysql> load data infile '/tmp/test-old-db-users.sql' replace into table new-test.phpbb_users ;
Query OK, 1042 rows affected (0.06 sec)
Records: 1042 Deleted: 0 Skipped: 0 Warnings: 0
mysql> load data infile '/tmp/test-old-db-themes.sql' replace into table new-test.phpbb_themes ;
Query OK, 1038 rows affected (0.04 sec)
Records: 1038 Deleted: 0 Skipped: 0 Warnings: 0
mysql>
افزایش امنیت مقدماتی در mysql:
بصورت پیش فرض my sql به تمامی client های خود توجه دارد و آنها را از تمامی پورت ها و آدرسها اصطلاحا listen میکند.این مورد را توسط دستور netstat -an میتوان مورد تست قرار داد:
[root@bigboy tmp]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
...
...
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
...
...
[root@bigboy tmp]#
هرگاه بطور مثال بخواهیم فقط به برنامه هائی که روی سرور خودمان است listen کنیم آنگاه باید ابتدا فایل /etc/my.cnf را ویرایش کرده و سپس توسط دستور bind-address به ipaddress که باید mysql آنرا listen کند اشاره کنیم که در این متال loopback خودمان میباشد.
[mysqld]
bind-address=127.0.0.1
هرگاه mysql را restart نموده و بار دیگر از دستور netstat –an استفاده کنیم نتیجه بروشنی قابل درک است.
---------
از اینکه وقت خود را در این وبلاگ صرف کردید متشکرم.
درس سوم را بزودی ارائه خواهم کرد.