بخش دوم

مشاهده محتویات یک جدول اطلاعاتی

در این مثال ردیف اول جدول را برای مشاهده ذکر نموده ایم:

mysql> select * from test limit 1;

 

پیکربندی موارد کاربردی تحت پایگاه داده جهت اتصال application های تحت زبان perl یا php .

مطابق جدول زیر میباید rpm های لازم را جهت پشتیبانی این زبانها نصب نمائیم.

 

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  خاص:

در این حالت از دستور MySQL SELECT   جهت export و load جهت import  استفاده می کنیم:

بطور مثال در دستور زیر اطلاعات دو جدول 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  استفاده کنیم نتیجه بروشنی قابل درک است.

---------

از اینکه وقت خود را در این وبلاگ صرف کردید متشکرم.

درس سوم را بزودی ارائه خواهم کرد.