Win10无法启动,如何从Ubuntu备份Windows的phpMyAdmin数据库(.SQL)
如何在Ubuntu中备份Windows分区里的MySQL数据库
没问题,你完全可以在Ubuntu中搞定Windows下的MySQL备份,我给你分两种场景来提供靠谱的操作方案:
第一步:先挂载Windows系统分区
首先你得让Ubuntu能访问Windows的文件系统:
- 最简单的方式:打开Ubuntu的文件管理器,找到你的Windows分区(一般是NTFS格式,名称可能是「Windows」或者磁盘盘符对应的名字),点击它就能自动挂载,挂载后的路径通常是
/media/[你的Ubuntu用户名]/[分区名称]。 - 如果自动挂载失败(比如提示Windows处于休眠状态),用命令行挂载:
- 先查看Windows分区的设备名:
sudo fdisk -l,找到标注为NTFS、对应系统盘的条目(比如/dev/sda2)。 - 创建挂载目录:
sudo mkdir /mnt/windows - 强制挂载并删除休眠文件(注意:这会清除Windows的休眠状态,下次启动Windows会正常重启,不会保留休眠时的内存状态):
sudo mount -t ntfs-3g -o remove_hiberfile /dev/sda2 /mnt/windows
- 先查看Windows分区的设备名:
方案一:从Windows的MySQL数据文件导出SQL备份
Windows下的MySQL数据默认存在C:\ProgramData\MySQL\MySQL Server [版本号]\Data(ProgramData是隐藏文件夹,Ubuntu里按Ctrl+H就能显示),挂载后对应路径是/media/[你的用户名]/[分区名]/ProgramData/MySQL/MySQL Server [版本号]/Data。
方法1:临时在Ubuntu的MySQL中加载Windows数据(最稳妥,支持InnoDB)
这是最可靠的方式,不管是MyISAM还是InnoDB表都能正常导出:
- 确保Ubuntu安装了MySQL:如果没装,先运行
sudo apt update && sudo apt install mysql-server - 停止Ubuntu本地的MySQL服务:
sudo systemctl stop mysql - 备份Ubuntu本地的MySQL数据(避免覆盖):
sudo mv /var/lib/mysql /var/lib/mysql_backup - 创建新的空数据目录并设置正确权限:
sudo mkdir /var/lib/mysql && sudo chown -R mysql:mysql /var/lib/mysql - 复制Windows的MySQL数据文件到这个目录:
sudo cp -r /media/[你的用户名]/[分区名]/ProgramData/MySQL/MySQL Server [版本号]/Data/* /var/lib/mysql/ - 再次确认权限:
sudo chown -R mysql:mysql /var/lib/mysql - 启动MySQL服务:
sudo systemctl start mysql - 现在就可以用
mysqldump导出SQL了:- 导出单个数据库:
mysqldump -u root -p 你的数据库名 > 备份文件名.sql - 导出所有数据库:
mysqldump -u root -p --all-databases > all_windows_databases.sql
提示输入密码时,用的是Windows下MySQL的root密码,不是Ubuntu的MySQL密码。
- 导出单个数据库:
- 导出完成后,记得恢复Ubuntu本地的MySQL数据:
- 停止服务:
sudo systemctl stop mysql - 删除临时数据:
sudo rm -rf /var/lib/mysql - 恢复备份:
sudo mv /var/lib/mysql_backup /var/lib/mysql - 启动服务:
sudo systemctl start mysql
- 停止服务:
方法2:用工具直接读取数据文件(适合不想折腾本地MySQL的情况)
如果你的数据库都是MyISAM引擎,可以用myisamdump直接导出数据:
- 安装工具:
sudo apt install mysql-client - 导出单个MyISAM表:
myisamdump /media/[你的用户名]/[分区名]/ProgramData/MySQL/MySQL Server [版本号]/Data/数据库名/表名.MYI > 表名.sql
注意:InnoDB表无法用这种方法直接导出,必须用上面的方法加载到MySQL服务中才行。
方案二:直接找到phpMyAdmin的现成SQL备份
如果你之前用phpMyAdmin导出过备份,直接找现成的文件更简单:
- 用户下载的备份:默认存在Windows的下载文件夹,路径是
C:\Users\[你的Windows用户名]\Downloads,挂载后对应/media/[你的用户名]/[分区名]/Users/[你的Windows用户名]/Downloads,直接在这里找.sql格式的文件即可。 - 服务器端存储的备份:如果是XAMPP/WAMP这类集成环境,phpMyAdmin可能会把备份存在服务器目录,比如XAMPP的
C:\xampp\phpMyAdmin\save或者C:\xampp\mysql\data(后者就是MySQL的数据目录,和方案一的路径一致)。 - 快速搜索所有SQL文件:用命令行在整个Windows分区搜索:
sudo find /media/[你的用户名]/[分区名] -name "*.sql",找到后复制到Ubuntu的个人目录即可。
一些注意事项
- 如果Windows下的MySQL版本和Ubuntu的差异较大(比如一个是5.7,一个是8.0),可能出现兼容性问题。这时候建议用Docker启动一个和Windows版本相同的MySQL容器,把数据目录挂载进去再导出,避免版本冲突。
- 复制MySQL数据文件时,一定要把
ibdata1、ib_logfile0、ib_logfile1这些InnoDB系统文件一起复制,否则InnoDB表无法正常加载。
内容的提问来源于stack exchange,提问作者Razin Shaikh
相关产品推荐
相关产品推荐

