如何使用php从远程机器转储和下载mysql?

时间:2015-04-24 01:01:10

标签: php mysql linux database ssh

在登录vps机器时转储mysql数据库很简单。 1.从我的本地机器登录vps机器 ssh root @vps_ip 2.将名为wpdatabase的mysql数据库转储到远程机器中的/home/test.sql中。 mysqldump -u root -p wpdatabase> /home/test.sql 现在,我可以使用php从远程机器转储和下载mysql,用php编写登录语句,用php下载转储的mysql数据库,所有的过程都用php完成? 想到Adrian Cid Almaguer,我想运行exec(“ssh root @vps_ip”);但是如何在exec命令中写密码? 男人ssh    ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:] port] [-e escape_char] [-F configfile]          [-I pkcs11] [-i identity_file] [-L [bind_address:] port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option]          [-p port] [-R [bind_address:] port:host:hostport] [-S ctl_path] [-W host:port] [-w local_tun [:remote_tun]] [user @] hostname          [命令] 无法在ssh中写密码?

3 个答案:

答案 0 :(得分:3)

连接ssh:

首先从您的控制台sshpass

安装
$ sudo apt-get install sshpass

然后你可以使用这个命令

$ sshpass -p your_password ssh user@hostname

使用php

<?php

 exec("sshpass -p your_password ssh user@hostname");

?>

您可以使用以下命令转储数据库:

<?php

 exec("mysqldump -uroot -padmin wpdatabase > /home/test.sql");

?>
  

注意:root是用户,admin是密码。

参考:

  

https://serverfault.com/q/241588/283624

答案 1 :(得分:1)

您可以使用Bash中的两个命令执行此操作:

1)使用SSH,生成MySQL转储(-p与数据库密码之间缺少的空间是有意的):

$ ssh user@mysqlhost -x "mysqldump -u dbuser -pdbpass db_name > ~/file.sql"

2)使用SCP,将文件传输到本地主目录:

$ scp user@mysql_host:~/file.sql ~/

请查看此博客文章,了解如何在服务器上设置SSH密钥,因此您无需输入密码:https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2

答案 2 :(得分:0)

 <?php
    $vps_ip= vps_ip;
    $connection = ssh2_connect($vps_ip, 22);
    ssh2_auth_password($connection, $root, $passwd);
    $cmd1="mysqldump -u root -pxyzzy wpdatabase > /home/back.sql";
    ssh2_scp_recv($connection, '/home/back.sql', '/home/back/myback.sql');
?>

这是为我做这份工作的更好方法。