2015-07-10 66 views
1

我試圖通過使用PHP的SSH備份mysql數據庫。 我已經通過ssh進行了ssh連接,但是我沒有在數據庫備份方面取得任何進展 。 這是我的代碼:通過ssh使用php備份mysql數據庫

<?php 
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist"); 

if(!($con = ssh2_connect("server.hosting.com", 22))){ 
    echo "fail: unable to establish connection\n"; 
} else { 

    if(!ssh2_auth_password($con, "user", "password")) { 
     echo "fail: unable to authenticate\n"; 
    } else { 
     // allright, we're in! 
     echo "okay: logged in...\n"; 




     if (!($stream = ssh2_exec($con, 'echo "mysqldump -u userdb -p pass 

dbname tablename > mydb_tab.sql"|mysql'))) { 
      echo "fail: unable to execute command\n"; 
     } else { 
      // collect returning data from command 
      stream_set_blocking($stream, true); 
      $data = ""; 
      while ($buf = fread($stream,4096)) { 
       $data .= $buf; 
      } 
      fclose($stream); 
     } 
    } 
} 
?> 
+0

什麼錯誤,你得到運行此腳本時? – BK435

+0

你的執行電話是無用的。 'mysql'期望** SQL **作爲輸入,並且您正在爲它發送一些隨機文本,而這恰恰是一個有效的shell命令。你不需要'mysql'進行轉儲。它應該是'mysqldump ...> dump.sql' –

回答

2

你的命令是不正確的,應該這樣寫:

mysqldump -h server –uuserdb -ppass dbname > mydb_tab.sql 
+0

這個命令生成mydb_tab.sql,但裏面沒有任何東西。 –

+0

林正試圖這一個,但仍然沒有:( ' mydb_tab.sql');? >' –

+0

去烏爾服務器和做trhough之前嘗試直接出現代碼查找錯誤 – meda