94

我不小心格式化了我的硬盘驱动器并重新安装了 Windows,并忘记备份我在 MySQL 服务器中的一个重要数据库。我正在尝试使用一些软件来挽救文件,但我不知道要查找什么。

文件存储的路径是什么,文件的名称是什么(我应该寻找什么命名约定或文件扩展名)?

我相信我的服务器正在使用 MyISAM,但不是 100% 肯定。

4

13 回答 13

99

您可以检查my.ini文件以查看数据文件夹的位置。

通常有一个文件夹 {mysqlDirectory}/data

MySQL数据存储:

Commands.frm
Commands.myd
Commands.myi

*.frm 文件包含表定义。您的 *.myi 文件是 MyISAM 索引文件。您的 *.myd 文件包含表数据。

编辑/更新。由于问题中显示的兴趣,这里有更多信息,也可以在评论中找到。

在 Windows 8.1 中,MySQL 数据库(默认情况下)存储在此处:C:\ProgramData\MySQL\MySQL Server 5.6\data

文件夹 C:\ProgramData 是一个隐藏文件夹,因此您必须在 Windows 资源管理器地址中键入它才能到达那里。在该数据文件夹中,数据库被命名为/{database_name_folder}/{database_tables_and_files}.

例如,

C:\ProgramData\MySQL\MySQL Server 5.6\data\mydatabase\mytable.frm
C:\ProgramData\MySQL\MySQL Server 5.6\data\mydatabase\mytable.ibd 

感谢 @marty-mcgee 提供此内容

于 2012-10-18T05:27:16.567 回答
40

在 Windows 7 中,MySQL 数据库存储在

C:\ProgramData\MySQL\MySQL 服务器 5.6\data

注意:这是一个隐藏文件夹。我的例子是 MySQL Server 5.6 版;如果不同,请根据您的版本更改文件夹名称。

知道这个位置很方便,因为有时 MySQL Workbench 无法删除模式(或导入数据库)。这主要是由于 db 文件夹中存在文件,由于某种原因,Workbench 在早期进程中无法删除这些文件。使用 Windows 资源管理器删除文件并重试(删除、导入),您的问题应该得到解决。

于 2013-08-10T21:06:22.230 回答
15

我在根目录中有一个默认的 my-default.ini 文件,并且有一个服务器配置:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

所以这并没有告诉我路径。

最好的方法是连接到数据库并运行此查询:

SHOW VARIABLES WHERE Variable_Name LIKE "%dir" ;

结果如下:

basedir                     C:\Program Files (x86)\MySQL\MySQL Server 5.6\
character_sets_dir          C:\Program Files (x86)\MySQL\MySQL Server 5.6\share\charsets\

datadir                     C:\ProgramData\MySQL\MySQL Server 5.6\Data\
innodb_data_home_dir    
innodb_log_group_home_dir   .\
lc_messages_dir             C:\Program Files (x86)\MySQL\MySQL Server 5.6\share\

plugin_dir                  C:\Program Files (x86)\MySQL\MySQL Server 5.6\lib\plugin\

slave_load_tmpdir           C:\Windows\SERVIC~2\NETWOR~1\AppData\Local\Temp
tmpdir                      C:\Windows\SERVIC~2\NETWOR~1\AppData\Local\Temp

如果您想查看为数据库配置的所有参数,请执行以下操作:

SHOW VARIABLES;

storage_engine 变量会告诉你使用的是 InnoDb 还是 MyISAM。

于 2015-02-12T04:05:40.280 回答
6

对于 Windows7 使用此链接:c:\users\all users\MySql\MySql Server xx\Data\

其中 xx 是您机器中安装的 sql server 的版本号。

于 2014-02-02T07:40:07.080 回答
6

MYSQL 8.0:

my.ini在磁盘中搜索,我们会找到这个文件夹:

C:\ProgramData\MySQL\MySQL Server 8.0
ProgramData,不是Program file

数据在子文件夹中:\Data.

每个人都有database一个文件夹,每个table是文件,每个index是 1+ 个文件。

这是一个示例数据库sakila在此处输入图像描述

于 2018-09-07T14:21:29.083 回答
4

只需对本地分区上的 *.myi 文件执行 Windows 搜索。时期。

正如我所怀疑的那样,它们位于程序文件文件夹中,而不是像大多数其他数据库管理器那样使用正确的仅数据文件夹。

为什么要搜索 my.ini 文件,用编辑器打开它,查找路径字符串,确保没有更改配置文件 (!),然后再进行第二次搜索?除了练习触摸打字之外,没有一点额外的好处。

于 2013-10-17T15:01:01.927 回答
3

那应该是您的 {install path}\data 例如C:\apps\wamp\bin\mysql\mysql5.5.8\data\{databasename}

于 2012-10-18T05:29:28.997 回答
3

它通常在下面指定的文件夹中,但 ProgramData 通常是隐藏文件夹。要显示它,请转到控制面板搜索“文件夹”,然后在高级设置下勾选显示隐藏文件并单击应用。C:/ProgramData/MySQL/MySQL 服务器 5.5/Data/

于 2016-03-01T08:25:19.340 回答
3

如果您使用的是安装了 Xampp 服务器的 Win10,那么您可以在C:\xampp\mysql\data中找到数据文件夹

在数据文件夹内,每个数据库都有自己的文件夹,该文件夹又包含代表数据库中单个表的 .frm、.myi 和 .myd 文件。

例如,如果您创建了一个名称为 myschool 的数据库,并且在数据库内部,您有三个名称为的表:

  1. 苗圃
  2. 基本的
  3. 中学

然后,您将拥有 Nursery 表:nursery.frm、nursery.myi 和nursery.myd。主表和辅助表也是如此。因此,在我这里提到的,您将在名为myschool的数据库文件夹内共有 9 个文件。

然后,您可以复制数据库文件夹并在新的 mysql 安装数据文件夹中使用它。

于 2019-04-22T13:43:38.707 回答
2

我刚刚在 Windows7 上安装了 MySQL 5.7。数据库文件位于以下隐藏目录中: C:\ProgramData\MySQL\MySQL Server 5.7\Data

my.ini文件位于同一根目录中:C:\ProgramData\MySQL\MySQL Server 5.7

于 2017-02-19T11:12:08.070 回答
1

在 MySQL 中,
“.myd”是一个数据库自身,
“.tmd”是一个临时文件。
但有时我也会看到“.sql”。

这取决于您的设置和/或导出方法。

于 2015-09-07T09:44:01.330 回答
0

1) 找到存储在 MySQL 安装文件夹中的 my.ini。

例如,

C:\Program Files\MySQL\MySQL Server 5.1\my.ini

2) 使用我们喜欢的文本编辑器打开“my.ini”。

#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files/MySQL/MySQL Server 5.1/"

#Path to the database root/"
datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data

找到“datadir”,这是 MySQL 在 Windows 中存储数据的位置。

于 2012-10-18T05:30:10.690 回答
0

C:\Program Files\MySQL\MySQL Workbench 6.3 CE\sys

粘贴URL到窗口文件,并Tables, Procedures, Functions从该目录获取

于 2017-02-01T15:33:10.660 回答