我有一个 Mysql 数据库转储。我想通过 Shell 脚本将它与 Hudson 一起安装到外部 Linux 机器上。
如何获取 Mysql 脚本并在其他计算机上的数据库中运行它?我知道我可以使用 sftp 传输文件,并在手动访问另一台计算机时使用 ssh,但是如何将这一切自动化为一个简单的 Shell 脚本?
答案1
$ mysql -p$pass -u$user -h$otherhost $db < dumpfile
这假设dumpfile
是来自 的文本mysqldump
,包含原始 SQL 语句。
重要的是,-p
和 密码之间不能有空格。 (我假设您想要自动登录。)如果密码没有立即跟随-p
,则mysql
将该选项解释为它应该以交互方式询问密码,并将单独的密码参数视为数据库名称。
为此,$user
必须具有以远程用户身份登录、删除表、创建表以及向该表插入行的权限。 MySQL 为用户保留了单独的远程和本地权限,因此这是一个很容易陷入的陷阱。由于允许远程用户拥有如此大的权力存在安全风险,因此您可能希望将 SSL(--ssl*
选项)与mysql
.否则,我不知道我会允许远程用户做这样的事情。