FTP服务器本身并不是数据库,它只是个文件传输通道,想要“取出”数据库,实际上是在服务器上先找到数据库备份文件(.sql 或 .tar.gz),再用FTP下载到本地;如果没有现成备份,则需要先通过SSH或主机管理面板导出数据库,然后才能用FTP传输。
只有FTP权限,没有数据库账号,怎么把数据库取出来?
这是很多虚拟主机用户的痛点,你只有一个FTP账号,无法登录phpMyAdmin或SSH,这种情况下,数据库文件仍然可能以备份形式存在服务器上,你需要做的是找到它。
常见的数据库备份文件位置
不同主机商和面板,备份目录不太一样,多数情况下,备份文件会放在以下几个位置:
- 网站根目录下的
/backup或/databases文件夹 - 系统盘的
/var/backups(如果是国内Linux主机,通常是/home/wwwroot/backup) - 主机面板自带的备份目录,比如宝塔面板的
/www/backup - 建站程序自动生成的临时备份,比如WordPress的
/wp-content/uploads/backups或某些插件指定的目录
如果你用的是FileZilla,连接后可以在“远程站点”窗口里逐级查看,别忘了开启“服务器强制隐藏文件”显示,很多文件名以 开头(.backup.sql)默认是看不到的,在FileZilla顶部菜单的“服务器”里,勾选“强制显示隐藏文件”即可。
用FTP下载到本地的步骤
- 打开FileZilla或WinSCP,输入FTP主机地址、账号、密码,点击快速连接。
- 远程站点中,进入存放备份的文件夹。
- 找到后缀名是
.sql、.bak、.tar.gz的文件,选中后右键选择“下载”。 - 本地目录会开始传输,完成后确认文件大小不是0字节。
这里有个细节:数据库备份文件可能不止一个,需要注意修改时间,下载最新的一份,避免覆盖旧数据,如果找不到任何备份,那就走下一节的路子。
国内服务器数据库备份文件在FTP哪里?
国内主机商(简米云、酷番云、西部数码等)的虚拟主机,通常会在FTP根目录下生成一个类似 _backup 或 db_backup 的文件夹,在西部数码的虚机上,常见路径是 /wwwroot/databases;简米云云虚机则需要登录云控制台手动备份后,备份文件才会出现在FTP的 /backups 目录里,如果你用的是宝塔面板,定期任务生成的数据库备份会默认放到 /www/backup/database 下,这个目录在FTP中可见。
行业共识认为,每天凌晨打包数据库文件到网站根目录外的备份区,是主机商比较常见的做法,但虚拟主机用户可能只有网站根目录的权限,建议先尝试联系主机商客服,确认备份文件具体在哪一层目录。
从FTP下载数据库文件后,如何导入到本地MySQL?
这个环节容易栽跟头,下载下来的 .sql 文件,不能直接双击打开,需要导入到本地数据库服务中,如果你在本地用phpStudy或XAMPP,可以这样操作:
通过phpMyAdmin导入
- 启动本地环境,浏览器访问
http://localhost/phpmyadmin - 创建一个新数据库,注意字符集选
utf8mb4 - 选中新建的库,点击“导入”,选择从FTP下载的
.sql文件,执行。 - 如果文件较大,超过phpMyAdmin的上传限制,用命令行导入更靠谱。
用命令行导入大文件
在Windows下,打开命令提示符,进入MySQL的bin目录,执行:
mysql -u root -p 数据库名 < d:ftp下载的数据库.sql
有的虚拟主机的导出文件带有 CREATE DATABASE 语句,这种情况下不需要预先建库,直接执行 mysql -u root -p < 文件.sql 也可以。
与其翻FTP找备份,不如直接连接服务器导出数据库
如果你有SSH权限或者能进入主机管理面板,取出数据库的效率会高很多,直接从MySQL服务端导出再传输,比四处找备份更安全也更可控。
用mysqldump导出并放到FTP目录
具体操作如下:
- 通过SSH登录服务器(Windows可以用Xshell,Mac直接用终端)。
- 执行导出命令:
mysqldump -u 用户名 -p 数据库名 > /home/wwwroot/backup/database.sql - 等命令执行完,用FTP登录,进入
/home/wwwroot/backup目录,把database.sql下载下来。
这样你有了一份完整的最新数据库,而不是依赖别人定时生成的备份,注意 backup 目录的写权限,如果没有写入权限,可以先把文件导出到 /tmp,然后移动到网站根目录下再用FTP下载。
如果用的是宝塔面板
更简单,登录宝塔后台,点击“数据库”,找到目标库,点“备份”,然后去左侧“文件”菜单,打开 /www/backup/database 目录,就能看到刚生成的备份文件,之后用FTP软件下载即可,整个操作路径很短。
如果你用的是cPanel这类国外面板,后台的“Backup”功能也可以生成数据库备份,并且会在FTP根目录生成一个 backup-日期.sql.gz 的文件,直接下载即可。
没有备份文件也没有SSH,只有FTP,还能取出数据库吗?
这种情况最棘手,比如你买了一个老牌的虚拟主机,只给了FTP权限,不提供数据库管理入口,理论上,你无法直接读取数据库文件,因为MySQL的数据文件是加密存储的,不能直接copy。
但有几条路可以试试:
- 借助网站程序本身导出,如果你的站点是WordPress,安装一款“WP-DB-Backup”这类插件,在后台触发一次数据库备份,插件会把
.sql文件生成到网站目录下,你再通过FTP下载,只要FTP和后台登录权限都有,就能实现。 - 查看程序配置文件,许多CMS(比如织梦、帝国、PHPCMS)的配置文件里存有数据库连接信息,虽然在FTP里能读,但只凭连接信息无法直接导出,需要配合服务器端工具。
- 联系主机商,把FTP账号信息发给主机商,说明要迁移站点,请求对方帮忙在服务器本地导出一份数据库文件,放到FTP目录,国内主流主机商一般会提供这个服务,但要先通过实名认证。
比较现实的一点是,如果主机商不配合,而你又没有服务器控制权,仅靠FTP几乎没有可能拿到数据库内容,这也提醒我们,平时应该定期通过程序后台或插件备份数据库,而不是把希望全押在主机商的自动备份上。
取一个数据库到底要花多少钱?自己弄还是找人代取?
不少人在“取数据库”这件事上纠结,主要是怕麻烦,自己动手是免费的,只需要一台电脑和一点耐心,上文提到的mysqldump命令,以及宝塔面板的备份功能,都不需要额外支出,但如果你的数据在旧服务器里,而且没有SSH,也没有面板,那就比较费时间了。
近年来,服务器运维外包的价格比较透明,单次帮客户迁移数据库的报价,根据主机商和地区不同,通常在几十元到几百元之间,帮人从VPS上打包数据库并上传到新站,耗时一小时左右,报价大概在100元上下,如果要处理加密数据或跨平台迁移,价格会高一些。
我建议先自己试试,只要你能登录FTP,能用pwd命令确认当前位置,再结合FileZilla的图形界面,大概率能独立完成,实在不行,再考虑找人代取,记得让对方提供操作截图或日志,避免数据被截留。
自己在动手之前,需要先确认服务器上是否开启了FTP的可见目录,以及有没有写入权限,这两点决定了备份文件能不能顺利下载。
从FTP里拿到的数据库文件要检查哪些东西?
下载下来的文件别急着导入,先做三件小事:
- 看文件头,用记事本打开
.sql文件,如果第一行是或-- MySQL dump
-- phpMyAdmin SQL Dump,说明导出正常,如果是乱码,可能是压缩文件没解压,如果文件是.gz或.zip后缀,用解压工具先解压。 - 确认字符集,文件里一般会有
SET NAMES utf8mb4的语句,导入时也要保持一致,否则中文会变成问号。 - 检查数据量,对比数据库在线时的总体大小和备份文件大小,差异过大可能说明部分表没有导出。
做这些检查能在导入环节帮你省去很多麻烦,很多新手导入失败,就是因为没看文件头就直接执行SQL,结果报错后还不知道错在哪。
数据库怎么取出来才算成功?
核心标准很简单:本地导入后,能正常打开网站或应用,所有数据齐全,如果只是把文件下载到硬盘,并没有导入成功,那还不能说“取出来了”,把数据库从FTP服务器搬出来,真正的流程是“导出-下载-导入-验证”,缺少任意一步,都有风险。
请记住这一点:FTP只是运输工具,数据库本身要靠服务端生成备份文件,你才能取出来,以后遇到类似问题,先判断自己有哪些权限,再决定走备份文件路线,还是SSH直连路线。
常见问题解答
FTP服务器数据库取不出来怎么办?
先确认你有没有进入正确的目录,用FTP工具查看网站根目录的上级目录,尝试输入 /backup、/database、/sql 等常用路径,如果还是看不到,说明主机商没有在该目录开放权限,需要提交工单或联系客服,确认下载时用的是二进制传输模式,ASCII模式会破坏压缩包和SQL文件。
从FTP下载的数据库文件是0字节,怎么回事?
大概率是服务器上的备份任务还没执行完,或者备份文件本身为空,遇到这种情况,不要反复下载同一个文件,而是去后台手动触发一次新的备份,如果是宝塔面板,可以在数据库备份页面直接点“备份”按钮,几秒钟后刷新FTP目录。
如何在FTP里区分哪一个是最新的数据库备份?
查看远程文件的修改时间,在FileZilla的远程列表里,默认会显示“修改时间”一列,按时间倒序排列,其次看文件大小,同一个库的备份文件大小通常比较接近,突然变小则可能是不完整备份,最稳妥的方法是,在本地新建一个文件,用FTP上传到服务器,然后对比两者的时间戳,就能确定备份文件的准确生成时间。
是实际操作中常遇到的情况,按路径和命令走,基本都能解决,如果还是不确定,就联系你的主机商要一份技术支持说明。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/727671.html





