查看原文
其他

MySQL数据库备份文件的恢复与查看

南京拓界 网络安全与取证研究 2023-10-09


更新关键字:三星高版本、微信恢复、支付宝账单恢复、新增应用……当前,绝大多数网站资源和数据库资源都部署在服务器上,对服务器进行取证有时会遇到固定下的数据库文件不能在取证电脑上直接查看的问题,为此需要将数据库备份文件在本地电脑上进行恢复查看。本文以常见的MySQL数据库为例,详细介绍如何将数据库备份文件导入到本地电脑上进行数据恢复与查看。


1、环境准备

在本机查看MySQL数据库备份文件,首先需要启动MySQL服务,这就要求取证电脑需安装MySQL数据库及相应的连接工具。

1.1  MySQL的环境要求

电脑系统要求:MySQL 数据库支持在多种操作系统上运行,包括Windows、Linux、MacOS 和 Solaris 等。Windows提供了可视化的图形界面并支持相关的数据库连接工具,本文采用的是 Windows 系统安装并配置 MySQL。

程序版本要求:目前,MySQL的最新版本是8.0,增加了许多新特性,但是新版本的兼容性与稳定性不够好,在此选择使用更稳定可靠的MySQL 5.7为例进行操作演示。

1.2  数据库连接工具的准备

目前市面上有许多数据库连接工具,如Navicat、Dbeaver、DataGrip、phpMyAdmin等,每种工具都有自己的优缺点,可以根据用户操作习惯加以选择,本文以最常用的Navicat工具为例来说明MySQL数据库的操作。


2、备份文件导入本地数据库

不同环境下MySQL数据库的备份文件格式会存在差异,本文主要介绍几种常见的备份文件导入本地数据库进行查看的方法。

2.1 .nb3类型文件导入

.nb3是MySQL数据库中的一种数据文件格式,通过存储引擎MyISAM进行创建和管理,此格式文件可以压缩数据,从而减少数据在磁盘中的占用空间。.nb3类型文件比较少见,通常是由Navicat连接工具导出的整个数据库备份文件。此类型文件导入数据库较简单,由于是连接工具导出的备份文件,所以只能通过连接工具导入数据库。在Navicat中创建一个空数据库,右键点击备份功能,选择还原备份,路径选择到导出的.nb3格式备份文件,点击开始,等待还原完成即可查看数据,如下图所示。

2.2 .sql类型文件导入

.sql类型文件也称为SQL脚本,通常由一系列SQL语句组成,可使用任何文本编辑器进行编辑和查看,一般是通过命令行工具mysqldump或Navicat等数据库连接工具导出的备份文件。此类型文件导入数据库的操作比较简单,主要有两种方法。

第一种方法是使用系统自带的命令提示符功能导入。打开命令提示符界面,输入 “mysql -u 用户名 -p”,再输入MySQL的登录密码后即可连接到MySQL数据库;使用 “use 数据库名;”切换到想要导入的的数据库,如下所示。

然后,使用 “source 备份文件地址”,当出现Query OK时表示导入数据成功,如下所示。

第二种方法是使用数据库连接工具进行导入。打开安装的数据库连接工具Navicat,新建一个MySQL连接并填写相关信息,如下所示。 

找到想要导入的数据库,右键库名选择运行SQL文件,找到所备份的.sql类型文件,点击开始即可导入数据,如下所示。 

提示框出现Finished successfully时表示数据导入成功。点开左侧的表选项即可看到导入到本地的所有数据,如下所示。 

2.3 .frm和.ibd类型文件导入

如果MySQL创建表时选择不同的存储引擎,生成的数据文件也会不同。InnoDB生成.frm和.ibd两个文件,其中.frm文件用于存储表结构,.ibd文件用于存储表数据。MyISAM生成.frm、.myd还有.myi三个文件,.frm文件也是用于存储表结构,.myd用于存储数据,.myi用于存储索引文件。MyISAM生成的3个文件直接拖入创建的新数据库文件路径中即可查看数据,而InnoDB引擎生成的2个文件复制到新数据库目录中找不到表结构和数据。此时,需要对表结构进行恢复后再把数据文件导入表中,具体操作如下:

首先,找到需要恢复表结构的.frm文件位置,在此位置打开命令提示符界面,使用“mysqlfrm --diagnostic xx.frm(xx为表名)”命令恢复此表的创表语句,然后复制创表语句,如下所示。

在Navicat中创建的一个新的数据库中执行创表语句,用于恢复表结构并创建新的表,如下所示。需要注意的是,当执行创表语句时需注意格式问题,删除多余的语句才能完整执行。

执行完毕后就可以看到整个表的表结构已经恢复成功,但是表中还没有数据,接下来需要把表数据导入到表中,如下所示。

在命令提示符界面使用“use 库名”进入到新创建的库中,然后执行“alter table xx DISCARD TABLESPACE;”命令丢弃新库中xx表的表空间,目的是为了导入新的数据到表中。执行完成后把.ibd文件复制到新库的xx表中,mysql本地数据存储的文件夹默认存放在C:\ProgramData\MySQL\MySQL Server 5.7\Data中。复制完成后再返回命令提示符界面执行“ alter table xx IMPORT TABLESPACE;”把导入的数据引入到xx表的表空间中,如下所示。此过程受数据量大小的影响可能耗时较长,等待数据导入即可。

数据导入成功后,在Navicat中就可以看到已经完整恢复出整个表的结构及数据,如下所示。

结 语

服务器取证必不可少的操作之一是数据库固定,由于不同案件使用的数据库环境不同,备份文件的格式也会存在差异。本文以MySQL数据库为例,向读者简要分享了数据库固定在不同类型备份文件的情况下如何在本地电脑上进行导入查看,为取证人员梳理了备份文件导入数据库的操作流程,为服务器取证中数据库证据固定提供了一种新的思路。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存