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

如何在远程服务器上备份MySQL数据库?,sql,mysql,database,backup,remote-server,database-restore,Sql,Mysql,Database,Backup,Remote Server,Database Restore,我在远程服务器上有一个MySQL数据库。我只有连接特权。我没有FTP访问服务器的权限,我需要对数据库进行完全转储。我已经尝试了mysqldump,但问题是它正在服务器上创建输出,因为我没有FTP,所以无法从服务器获取输出 如何进行干净备份并在本地计算机中获取转储(当然,备份应该在本地计算机中还原)?您可以指定服务器名称作为mysqldump的一个选项: mysqldump——主机服务器名dbname>dbname.sql 您可以使用MySQL workbench,它可以通过一个用户友好的界面直接

我在远程服务器上有一个MySQL数据库。我只有连接特权。我没有FTP访问服务器的权限,我需要对数据库进行完全转储。我已经尝试了
mysqldump
,但问题是它正在服务器上创建输出,因为我没有FTP,所以无法从服务器获取输出


如何进行干净备份并在本地计算机中获取转储(当然,备份应该在本地计算机中还原)?

您可以指定服务器名称作为
mysqldump
的一个选项:

mysqldump——主机服务器名dbname>dbname.sql

您可以使用MySQL workbench,它可以通过一个用户友好的界面直接备份到本地文件夹

我使用SQLyog,在这里我们可以连接到远程服务器并使用该工具进行备份。

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

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

默认情况下,
mysqldump.exe
锁定表,因此在转储期间不可能执行其他SQL操作。在不锁定任何表的情况下,使用以下语法备份完整的远程数据库并转储本地计算机上的所有内容:

mysqldump -u username -p --single-transaction --quick --lock-tables=false -h ipaddress myDB > backup.sql

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

我不理解这个问题
mysqldump
将转储写入标准输出,当您重定向它时,它将转到本地主机,而不是服务器。要运行mysqldump,我需要首先登录到服务器,我没有该权限,我只有一个到Mysql服务器的sql连接
mysqldump
需要一个
--host
选项来访问远程服务器,就像
Mysql
命令一样。我用了很多次,但总是想知道-这不是一个可怕的漏洞吗?我的意思是,任何拥有主机和数据库名的人都可以复制整个数据库,而无需任何密码??它会像其他任何使用
mysql
的方式一样检查权限。一个问题-确保-p PASSWORDman mysqldump之后没有空间:。。。在命令行上指定密码应该被认为是不安全的。。。而且,如果您只有对服务器的SSH访问权,Workbench也可以工作。它在Ubuntu上可用:
sudoapt-get-install-mysql-workbench