2015-07-10 76 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