نحوه BackUp و Restore:
در MySQL جداول به صورت فایلهای مجزا هستند و توضیح دادم که بانک فقط یک شاخه است. پس یک شاخه دیگر بسازید مثلا C:\Backup\MySQL\Person و اطلاعات جداول را در آن قرار دهید.
اول با جدول از طریق دستورات ارتباط برقرار کنید سپس از طریق دستور SQLEXEC اول جدول را قفل کنید.
سپس پشتیبان بگیرید و دوباره قفل را باز کنید.
مثال:
SQLSETPROP(0,"DispLogin",3)
SQLSETPROP(0,"Asynchronous",.F.)
SQLSETPROP(0,"BatchMode",.T.)
SQLSETPROP(0,"PacketSize",4096)
SQLSETPROP(0,"ConnectTimeOut",15)
SQLSETPROP(0,"WaitTime",100)
SQLSETPROP(0,"DispWarnings",.F.)
*
nH = SQLSTRINGCONNECT("DSN=person;DESC=MySQL ODBC 3.51 Driver DSN;DATABASE=person;SERVER=localhost;UID=;PASSWORD =;PORT=3306;OPTION=3;STMT=;")
IF nH < 1
RETURN .F.
ENDIF
*
SQLEXEC(nH, "LOCK TABLES person WRITE;", "Person")
SQLEXEC(nH, "BACKUP TABLE person TO 'c:/Backup/MySQL/Person';", "Person")
SQLEXEC(nH, "UNLOCK TABLES;", "Person")
آنچه مهم است این است که بدانید در لینوکس مسیر با / مشخص میشود و شما هم از همین روش استفاده کنید حتی در ویندوز.
برگردانیدن پشتیبان:
مثل توضیحات فوق با این تفاوت که به جای Backup از Restore استفاده کنید.
بخشهای زیر در همان فایل راهنما را ببیند:
13.5.2.2 BACKUP TABLE Syntax
13.5.2.7 RESTORE TABLE Syntax
13.4.5 LOCK TABLES and UNLOCK TABLES Syntax.
5.6 Disaster Prevention and Recovery
ساختن کاربر:
قبل از هر کاری بایستی که محدودیت ورود برای مای سکوئل تعریف کنید دستور این کار:
SQLEXEC(nH, "SET PASSWORD = PASSWORD('hi');", "Person")
خب حالا دیگر کسی از خط دستور داس هم نمی تواند وارد سیستم شود. برای برداشتن رمز هم جای رمز را خالی بگذارید. مواظب باشید که در دستور SQLSTRINGCONNECT و SQLCONNECT هم از این رمز استفاده کنید. نام کاربر ODBC است. حالا از خط دستور داس باید تایپ کنید MySQL -p و رمز را بدهید.
البته دقت کنید مسائلی که من مطرح میکنم منحصرابرای ویندوز است و در لینوکس قضیه کمی متفاوت است.
این را بدانیم که تمام اطلاعات در شاخه c:\mysql\data\mysql ذخیره میشود و فایلهای حاوی User هم ایم اطلاعات را در خود جا دارند. این فایل را در فاکس باز میکنیم.
SQLSETPROP(0,"DispLogin",3)
SQLSETPROP(0,"Asynchronous",.F.)
SQLSETPROP(0,"BatchMode",.T.)
SQLSETPROP(0,"PacketSize",4096)
SQLSETPROP(0,"ConnectTimeOut",15)
SQLSETPROP(0,"WaitTime",100)
SQLSETPROP(0,"DispWarnings",.F.)
*
nH = SQLSTRINGCONNECT("DSN=person;DESC=MySQL ODBC 3.51 Driver DSN;DATABASE=person;SERVER=localhost;UID=ODBC;PASS WORD=hi;PORT=3306;OPTION=3;STMT=;")
IF nH < 1
RETURN .F.
ENDIF
*
SQLEXEC(nH,"SELECT * FROM Mysql.user Person","Person")
BROWSE
خب من چکار کردم!؟!؟!؟! از یک بانک جدول بانک دیگه را باز کردم !؟ آخه میدونید کار گرافیکی راحتتره.
حال جدول را نگاه کنیم. خودتون میفیهید چیه نه؟ جالبه. خب دست بکار بشید و جلوی نفوذ بیگانه را بگیرد. البته اگه ببگانه خودی نباشه.
یه دستور هست که روی این جدول کار میکنه یعنی GRANT
یه نگاهی به این قسمت راهنما بیاندازید:
13.5 Database Administration Statements
13.5.1 Account Management Statements
13.5.1.1 GRANT and REVOKE Syntax
GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
ON {tbl_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY [PASSWORD] 'password']
[, user_name [IDENTIFIED BY [PASSWORD] 'password'] ...]
[REQUIRE
NONE |
[{SSL| X509}]
[CIPHER cipher [AND]]
[ISSUER issuer [AND]]
[SUBJECT subject]]
[WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR # |
MAX_UPDATES_PER_HOUR # |
MAX_CONNECTIONS_PER_HOUR #]]
REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
ON {tbl_name | * | *.* | db_name.*}
FROM user_name [, user_name ...]
REVOKE ALL PRIVILEGES,GRANT FROM user_name [, user_name ...]
تابع Pssword هم کار encrypt داده ها را انجام میده.
ساختن Setup
مای سکوئل خودش یک ست آپ داره اما اگه راضیتون نمیکنه من قبلا توضیح دادم چه فایلهایی باید رجیستر بشه قسمت اول بود.
برای ODBC اون هم ست آپ هست ولی من تا حالا نتونستم Setup اون را بفهمم چی میکنه. البته میدونم که یکسری Dll را نصب میکنه و روی فایل
یه چیز دیگه اینه که شما برای اینکه برنامه تون توی یک کامپیوتر دیگه درست کار کنه تنظیماتی که در فاکس هنگام ساخت Connection انجام میدهید را نیز در فایل ODBC.ini در شاخه ویندوز فایل مقصد هم اعمال کنید البته با برنامه نویسی که کاربر متوجه نشه. (بد نیست یه نگاهی هم با این فایل بیاندازید.)