我知道如何通过 cli 导入 sql 文件:
mysql -u USER -p DBNAME < dump.sql
但那是如果dump.sql 文件是本地的。我如何使用远程服务器上的文件?
我知道如何通过 cli 导入 sql 文件:
mysql -u USER -p DBNAME < dump.sql
但那是如果dump.sql 文件是本地的。我如何使用远程服务器上的文件?
你没有说你对远程服务器有什么网络访问权限。
假设您对远程服务器具有 SSH 访问权限,您可以将远程 mysqldump 的结果通过管道传输到 mysql 命令。我刚刚测试了这个,它工作正常:
ssh remote.com "mysqldump remotedb" | mysql localdb
我把用户、密码、主机之类的东西放进去,.my.cnf
这样我就不会经常输入它们——在多用户系统上很烦人而且对安全性不利,你将密码以明文形式放入你的 bash_history !但是,如果需要,您可以轻松地将这些-u -p -h
东西重新添加到两端:
ssh remote.com "mysqldump -u remoteuser -p'remotepass' remotedb" | mysql -u localuser -p'localpass' localdb
最后,您可以通过管道通过gzip
网络压缩数据:
ssh remote.com "mysqldump remotedb | gzip" | gzip -d | mysql localdb
只是想我会添加这个,因为我的本地 VM 上的空间严重不足,但是如果远程服务器上已经存在 .sql 文件,你可以这样做;
ssh <ip-address> "cat /path/to/db.sql" | mysql -u <user> -p<password> <dbname>
我会使用wget将其下载到文件或通过管道输入。