【问题标题】:Backup mysql database through ssh using php使用php通过ssh备份mysql数据库
【发布时间】:2015-07-11 05:02:48
【问题描述】:

我正在尝试使用 PHP 通过 SSH 备份 mysql 数据库。 我已经通过 ssh 建立了 ssh 连接,但我没有取得任何进展 与数据库备份。 这是我的代码:

<?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);
        }
    }
}
?>

【问题讨论】:

  • 运行此脚本时遇到什么错误??
  • 你的 exec 调用没用。 mysql 期望 SQL 作为输入,并且您正在向它提供一些恰好是有效 shell 命令的随机文本。您不需要mysql 进行转储。应该是mysqldump ... &gt; dump.sql

标签: php mysql ssh


【解决方案1】:

你的命令不正确,应该是这样的:

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

【讨论】:

  • 此命令生成 mydb_tab.sql 但里面没有任何内容。
  • 我现在正在尝试这个但仍然没有:(&lt;?php $connection = ssh2_connect('server.hosting.com', 22); ssh2_auth_password($connection,'user', 'pass'); $stream = ssh2_exec($connection, 'mysqldump -h server.hosting.com -uuserdb -ppass dbname &gt; mydb_tab.sql'); ?&gt;
  • 在你的服务器上直接尝试,然后再通过代码查找错误
猜你喜欢
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2013-08-06
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多