在 php 中通过 exec() 将数据库与 mysqlddump 同步

synchronize database with `mysqlddump` through `exec()` in php

我试图通过将数据库复制到本地计算机来同步本地主机上的数据库和服务器上的数据库。

我有以下 shell 命令,它在终端中正常工作:

ssh user@server "mysqldump -u user -p'secret' db-name" | mysql -u local_user -p'secret' db-name

ssh 登录已使用 question@Serverfault 中的密码自动登录。

我已经尝试在 php 中通过 exec() 执行此命令,但没有得到任何结果。

exec(ssh user@server "mysqldump -u user -p'secret' db-name" | mysql -u local_user -p'secret' db-name)

关于如何进行的任何想法?

改用 ssh_exec (docs)。

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$stream = ssh2_exec($connection, '/usr/local/bin/php -i');
?>

找到问题了。 www-data 用户无法使用生成的密钥登录。 (无效权限)

Apache user account passwordless access to the server - Ubuntu 的答案产生了解决方案。