2012-03-13 80 views
2

我需要从远程计算机上的mysql安装通过SSH复制到我的本地计算机mysql的整个数据库。通过SSH检索mysql数据库

我知道SSH和本地和远程MYSQL管理用户和密码。

这是否足够的信息,它是如何完成的?

+0

你知道如何在本地复制数据库吗? – 2012-03-13 19:38:40

+0

我敢肯定我可以找出... – 2012-03-13 19:39:55

回答

4

要读这里:从http://www.cyberciti.biz/tips/howto-copy-mysql-database-remote-server.html修改

- 修改,因为我更喜欢使用.sql作为扩展SQL文件:

通常你运行的mysqldump创建一个数据库复制和备份作为 如下:

$的mysqldump -u用户-p数据库名称> DB-名.sql

复制DB-name.out文件使用SFTP/SSH远程MySQL服务器:

$ SCP DB-名.sql [email protected]:/备份

恢复远程服务器数据库(超过ssh登录):

$ MySQL的用户-u -p DB-名<分贝-名.sql

基本上你将使用mysqldump生成数据库的转储,将其复制到本地机器上,然后通过管道将内容转换成mysql再生DB。

您可以自己复制数据库文件,而不是使用mysqldump,但前提是您可以关闭远程计算机上的MySQL服务。

+1

我认为你应该编辑这个答案来包含正确的答案,incase链接去死 – 2012-03-13 19:50:10

+1

@MildFuzz好的。无论如何,这是谷歌搜索“将mysql数据库从一台服务器复制到另一台服务器”的第一个结果。 – 2012-03-13 20:36:27

0

我会推荐的Xtrabackup工具。它支持通过SSH进行热复制数据,并且具有优秀的文档。与使用mysqldump不同,这将复制MySQL实例的所有元素,包括用户权限,触发器,复制等等。

0
  1. SSH连接远程机器
  2. 使数据库using mysqldump
  3. 传输文件到本地机器using scp
  4. 的备份将数据库恢复到本地的MySQL
5

这将倾远程数据库通过pipes

ssh mysql-server "mysqldump --all-databases --quote-names --opt --hex-blob --add-drop-database" | mysql

你应该采取有关用户护理mysql.users

此外,为了避免输入用户名和密码的mysqldump和MySQL在本地和远程主机,您可以创建一个文件~/.my.cnf

[mysql] 
user = dba 
password = foobar 

[mysqldump] 
user = dba 
password = foobar 

http://dev.mysql.com/doc/refman/5.1/en/option-files.html

9

从远程服务器到本地计算机

ssh {ssh.user}@{remote_host} \ 
'mysqldump -u {remote_dbuser} --password={remote_dbpassword} 
{remote_dbname} | bzip2 -c' \ | bunzip2 -dc | mysql -u {local_dbuser} 
--password={local_dbpassword} -D {local_dbname} 
+0

我唯一的问题是你有ssh在bzip2流上运行一个gzip文件......把'-C-c标志放到ssh可能会更好。 – 2015-02-23 18:56:25

+1

您为什么要将密码作为命令行参数传递?任何可以在该机器上运行ps的人都可以看到密码。 – 2015-09-26 17:27:30