如何在远程服务器上备份MySQL数据库?

29
我有一个存在于远程服务器上的MySQL数据库。我只有连接权限,没有FTP访问服务器的权限,需要完整备份数据库。我尝试使用mysqldump,但问题是它在服务器上创建输出,由于我没有FTP,无法从服务器获取输出。
我该如何进行干净的备份并在本地机器上获取备份(当然,备份应该可以在我的本地机器上恢复)?

我不理解这个问题。mysqldump将转储写入标准输出,当您重定向它时,它会进入本地主机而不是服务器。 - Barmar
运行mysqldump之前,我需要先登录到服务器,但我没有权限,我只有一个连接到Mysql服务器的SQL连接。 - john smith
2
mysqldump 命令可以使用 --host 选项来访问远程服务器,就像 mysql 命令一样。 - Barmar
6个回答

35

你可以将服务器名称作为选项传递给 mysqldump

mysqldump --host servername dbname > dbname.sql

我使用过很多次,但一直在想 - 这不是一个可怕的漏洞吗?我的意思是,任何人只要有主机和数据库名称就可以复制整个数据库而无需密码吗? - Obmerk Kronen
11
它像任何其他使用mysql的方式一样检查权限。 - Barmar
可能有防火墙阻止了与服务器的网络连接。或者它被配置为仅在本地侦听。@guitarlass - Barmar

28
mysqldump --host hostaddress -P portnumber -u username -ppassword dbname > dbname.sql

通常 MySQL 的远程端口是3306。以下是一个例子:

mysqldump --host 192.168.1.15 -P 3306 -u dev -pmjQ9Y mydb > mydb.sql

4
注意事项:确保在-p密码后不要加空格。 - jpw
2
使用mysqldump命令时,应该避免在命令行中指定密码,因为这被认为是不安全的做法。更多信息请参考:https://dev.mysql.com/doc/refman/5.7/en/password-security-user.html - alditis

2

2
如果您只有SSH访问服务器,Workbench也可以工作。而且它在Ubuntu上可用:sudo apt-get install mysql-workbench - Rael Gugelmin Cunha
那个软件太糟糕了,我用了好几年了,总是出现版本问题。 - user7082181

1
默认情况下,mysqldump.exe 会锁定表格,因此在转储期间无法进行其他 SQL 操作。为了不锁定任何表格,使用以下语法备份完整的远程数据库并将所有内容转储到本地计算机上:
mysqldump -u username -p --single-transaction --quick --lock-tables=false -h ipaddress myDB > backup.sql

username更改为您自己的用户名,将ipaddress更改为远程IP地址,并将myDB更改为您要备份的实际数据库。这将提示您输入密码。提供密码后,转储将开始。

0

我使用SQLyog来连接远程服务器并使用该工具进行备份。


0
如果服务器支持PHP,您可以上传并尝试 Adminer。我喜欢它作为PHPMyAdmin的替代品,您可以使用它创建备份!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接