2013-08-30 56 views
0

我已經看到了當地的MySQL數據庫這項工作:如何使用Java轉儲遠程MySQL數據庫?

Runtime.getRuntime().exec("mysqldump -u USERNAME -p PASSWORD DBNAME > /path/to/location/backup.sql"); 

但有可能傾倒從Web服務器遠程MySQL數據庫?

我正在製作一個程序,通過FTP備份我的網站文件(已完成此部分),並備份我的MySQL數據庫在服務器上。所以我需要知道如何做到這一點。

回答

0

如果您嘗試從其他計算機轉儲數據庫數據,則需要將特權用戶的特權授予此任務。

例如,用戶是:「remoteAdminUser」

GRANT SELECT, LOCK TABLES 
ON *.* 
TO 'remoteAdminUser'@'localhost' IDENTIFIED BY 'dbPass'; 

,然後你可以使用這個java代碼

/******************************************************/ 
//Database Properties 
/******************************************************/ 
String dbName = 「dbName」; 
String dbUser = 「remoteAdminUser」; 
String dbPass = 「dbPass」; 
String filePath = 「c:\\sqlDump\myFirstDump.sql」; 
/***********************************************************/ 
// Execute Shell Command 
/***********************************************************/ 
String executeCmd = ""; 
executeCmd = "mysqldump -u "+dbUser + " -p"+dbPass + " "+dbName + " -r "+filePath; 
} 
Process runtimeProcess =Runtime.getRuntime().exec(executeCmd); 
int processComplete = runtimeProcess.waitFor(); 
if(processComplete == 0){ 
out.println("Backup taken successfully"); 
} else { 
out.println("Could not take mysql backup"); 
} 
+0

不,我想從網絡服務器轉儲它,這意味着MySQL服務器在域上。 – user2734304

+0

好的,但是讓我知道你是否可以從web服務器查詢數據庫,例如,你可以做一個「select * from information_schema.tables」 –

0

它可以,如果你有訪問服務器來完成。你可以告訴mysqldump連接到遠程服務器:

mysqldump -h yourServerAddress -u yourUser -pYourPassword dbName > output_file.sql 

yourServerAddress是在MySQL服務器的IP地址。