在Linux CLI中复制MySQL数据库而无需导出SQL文件
在Linux CLI中复制MySQL数据库而无需导出SQL文件
我有一个MySQL数据库,我想使用Ubuntu Linux命令行界面进行复制,而无需先下载MySQL文件。我尝试了以下命令:\nmysql -uroot -e\'mysqldump -uroot db_old | mysql -uroot backup db_new;\'\n但是出现了以下错误:\nERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use.\n我做错了什么?我想要的是创建一个名为db_new的数据库,其中包含与db_old相同的数据(换句话说,复制db_old并将新数据库命名为db_new,所有这些操作都在一条命令中完成,而无需导出数据到文件)。
在Linux命令行界面中,如果想要在不导出SQL文件的情况下复制MySQL数据库,有以下方法可以解决。
首先,创建一个新的数据库:
mysql -uroot -pyourpasswd -e "Create database db_new;"
然后运行以下命令(不需要执行“-e”):
mysqldump -uroot -pyourpasswd -n db_old | mysql -uroot -pyourpasswd db_new;
根据man页面的描述,mysqldump还可以通过从一个MySQL服务器复制数据到另一个MySQL服务器来填充数据库:
shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name
"-n"选项的缩写是"--no-create-db",如果不需要为root连接设置密码(不建议),则可以从所有语句中删除"-pyourpasswd"。
嗨,我运行了没有执行的命令,但是它没有起作用。我只收到了mysql命令的一长串选项列表。我查看了我的数据库列表,发现没有复制。
这里有一些有用信息:stackoverflow.com/questions/25794
非常感谢你的帮助,它起作用了!不过,对于你的代码需要做一个小小的更新。在第二行中,不需要使用"-n"选项。