如何在MySQL 8.0中打开MyISAM引擎的foo.MYI等数据库文件?
解决MyISAM表文件无法导入MySQL Workbench的问题
这些.frm(表结构)、.MYI(索引)、.MYD(数据)和db.opt(数据库配置)都是MyISAM引擎的原生文件,MySQL Workbench本身不能直接打开它们,必须把它们正确导入到MySQL服务中才能访问。按以下步骤操作:
先停止MySQL服务
复制文件前必须停掉服务,避免文件被锁定。- Windows:打开命令提示符执行
net stop mysql - Linux:执行
systemctl stop mysql(或service mysql stop,依发行版而定)
- Windows:打开命令提示符执行
复制数据库文件夹到MySQL数据目录
- 找到MySQL的数据目录:
- Windows默认路径一般是
C:\ProgramData\MySQL\MySQL Server X.X\Data(X.X是版本号,注意ProgramData是隐藏文件夹) - Linux默认路径通常是
/var/lib/mysql/
- Windows默认路径一般是
- 把你下载的整个数据库文件夹(包含所有
.frm/.MYI/.MYD/.opt文件)复制到这个Data目录下 - 修复权限(仅Linux需要):执行
chown -R mysql:mysql /var/lib/mysql/你的数据库文件夹名/,确保MySQL用户拥有读写权限
- 找到MySQL的数据目录:
启动服务并修复表
- 启动MySQL服务:
- Windows:
net start mysql - Linux:
systemctl start mysql
- Windows:
- 打开Workbench连接到MySQL,执行表修复命令:
如果有多个表,逐个执行;或者用命令行工具更快:REPAIR TABLE foo;mysqlcheck -u root -p --repair 你的数据库名(输入密码后自动修复所有表)
- 启动MySQL服务:
验证导入结果
在Workbench的左侧面板刷新数据库列表,找到你的数据库,展开后就能看到foo表,右键选择Select Rows - Limit 1000即可查看数据。
为什么之前的方法失败?
大概率是这几个原因:
- 复制文件时MySQL服务没停,导致文件被锁定无法正常读取
- Linux下没有设置正确的文件权限,MySQL无法访问这些文件
- 表文件和当前MySQL版本不兼容,需要通过
REPAIR TABLE修复兼容性问题
内容的提问来源于stack exchange,提问作者void_programmer
相关产品推荐
相关产品推荐

