![网络攻防实战研究:MySQL数据库安全](https://wfqqreader-1252317822.image.myqcloud.com/cover/600/34171600/b_34171600.jpg)
1.6 MySQL数据库的导入与导出
目前,很多网站系统都采用MySQL+PHP+Apache的架构,其中MySQL数据库是基础,查看数据库、将数据库导出到本地、将数据库导入本地数据库进行还原、在本地架设模拟环境进行测试等,都离不开对数据库的操作。尽管数据库的导入和导出是常见和基础的操作,但在实际操作过程中有很多技巧和注意事项。本节将对MySQL数据库的导入和导出进行详细介绍。
1.6.1 Linux下MySQL数据库的导入与导出
1.MySQL数据库的导出命令和参数
对于Linux而言,主要通过mysql和mysqldump命令来执行导出操作。在使用这两个命令时,都需要使用参数。
MySQL连接参数列举如下。
· -u$USER:用户名。
· -p$PASSWD:密码。
· -h127.0.0.1:如果连接远程服务器,请用对应的主机名或IP地址替换“127.0.0.1”。
· -P3306:端口。
· --default-character-set=utf8:指定字符集。
· --skip-column-names:不显示数据列的名字。
· -B:以批处理方式运行MySQL程序。查询结果将以制表符间隔格式显示。
· -e:执行命令后退出。
mysqldump参数列举如下。
· -A:全库备份。
· --routines:备份存储过程和函数。
· --default-character-set=utf8:设置字符集。
· --lock-all-tables:全局一致性锁。
· --add-drop-database:在每次执行建表语句之前,执行DROP TABLE IF EXIST语句。
· --no-create-db:不输出CREATE DATABASE语句。
· --no-create-info:不输出CREATE TABLE语句。
· --databases:将后面的参数都解析为库名。
· --tables:第一个参数为库名,后续参数均为表名。
2.MySQL数据库的常见导出命令
(1)将全库备份到本地目录
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_48_1.jpg?sign=1739259312-ZMnKmwsoxXnsxRd7pPM8ammfyL7NLBLJ-0-c5f8242bd0cf9e289d67d7c860b4027b)
(2)将指定库导出到本地目录
将antian365库导出到本地目录,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_48_2.jpg?sign=1739259312-W7BTnXLS9hhneNQjiz4jOrGitVGGKsGb-0-0d92478ac0920e6f477b53869209fea0)
(3)将某个库中的表导出到本地目录
将antian365库中的user表导出到本地目录,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_48_3.jpg?sign=1739259312-6tjb85jfgIiSBE9Hjm1pcY1BlBFE09Rq-0-cf0c83dc202e212f8f16f64f288915f2)
(4)将指定库中的表(仅数据)导出到本地目录(带过滤条件)
将mysql库中的user表导出到本地目录,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_48_4.jpg?sign=1739259312-Xk7yw75E3p6iQa8AiVgLoOxpPjy1SLHp-0-ccb927ec1ac1099f131e175d9759cae0)
(5)将某个库的所有表结构导出
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_48_5.jpg?sign=1739259312-KbNnCAY0OUWH0B3QtJmjaHnWo5ZGE1Ug-0-e7679b8b3644d916cfc81613c192acab)
(6)将某个查询sql的数据以txt格式导出到本地目录
在导出的文件中,各数据间用制表符分隔,例如“'select user,host,password from mysql.user;'”,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_48_6.jpg?sign=1739259312-c5YzeBNxtfprrfRfvyNb3pCVHvFHu4GR-0-6e1d684f407e11afdff73fdec97f95b6)
(7)将某个查询sql的数据以txt格式导出到MySQL服务器
登录MySQL,将默认的制表符换成逗号(适应csv格式),命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_48_7.jpg?sign=1739259312-tEonyaVGtjKqccrdM0ReDkNsblSfxN94-0-2de5862520ca92f33e6dd80d112c1d55)
3.提高MySQL数据库导出速度的技巧
通过 MySQL 导出数据的速度可能非常慢,在处理百万级数据时可能要花上几个小时。在导出时,合理地使用几个参数,就可以提高速度。
· --max_allowed_packet=XXX:客户端和服务器之间通信缓存区的最大值。
· --net_buffer_length=XXX:TCP/IP和套接字通信缓存区的大小,创建长度为net_buffer_length的行。
注意
max_allowed_packet和net_buffer_length的值不能比目标数据库的设定值大,否则可能会出错。
首先,确定目标数据库的参数值,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_49_1.jpg?sign=1739259312-scKL0LvsFRLQn9Y7MiFHM2ktqzxnn8Tf-0-e76930e29af32515741daa702c15383b)
然后,根据参数值输入mysqldump命令,示例如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_49_2.jpg?sign=1739259312-seSYXwpw6wiOFZJ4LYiBbxORngdTwb6i-0-573b8a8685c048c6ee46d2857a360284)
现在,导入速度就变得很快了。需要注意的是,max_allowed_packet和net_buffer_length参数的值应该设置得大一些。最简单的方法是直接复制数据库目录,不过在这样做之前要停止MySQL服务。
4.MySQL数据库的常见导入命令
在将全库数据恢复到 MySQL 时,因为包含 mysql库的权限表,所以导入后需要执行“FLUSH PRIVILEGES;”命令。
(1)使用mysql命令导入
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_49_3.jpg?sign=1739259312-Y1u2ZTnmVAGzDw9Of0AVkBldONviIb9I-0-d8cc8d3d3cd8b76f2dbb5a1b510eaa5c)
(2)使用source命令导入
登录MySQL,执行source命令(后面的文件路径为绝对路径),示例如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_49_4.jpg?sign=1739259312-mHrIlZONUJDyXD4YVbUG32pAVrCe6VdU-0-d832a5ea3a7b7d782138dd6b687949bd)
(3)使用mysql命令恢复某个库的数据
使用mysql命令恢复antian365库中的user表,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_49_5.jpg?sign=1739259312-apt8xb2W9eDv8nrmxpNro776fWDpZaU2-0-a36f11480c0c0e72c4722322e27c8289)
(4)使用source命令恢复某个库的数据
使用source命令恢复antian365库中的user表,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_49_6.jpg?sign=1739259312-ZzDsDhy4ntvvwg3hisANBaI9CRPnQ1uE-0-a5fc3e869eea23cef7ed005f2b7e6ff7)
(5)恢复MySQL服务器上的txt文件
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_49_7.jpg?sign=1739259312-lmsqsuMlSqNRq9nbfbZEjg15fPb0b3Da-0-1cb1df88ef903a24851bc316402ce840)
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_1.jpg?sign=1739259312-K1uLMJ2fR6m4r9d6v4MBQR1ffJXh2m7r-0-89b7e54cc316288a4a175e5ab74e0927)
(6)恢复MySQL服务器上的csv文件
在执行以下命令时,需要FILE权限,各数据间用逗号分隔。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_2.jpg?sign=1739259312-V4pcGVtNazmmGnQfz8k45yZcObri4SU4-0-7a224da9b0b62b6a1154ec251eac7cf2)
(7)将本地txt或csv文件恢复到MySQL中
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_3.jpg?sign=1739259312-hfnhncaR4eILHMiPT2QIIYMcgjPfn0FS-0-eb35c8c39d28f646cd2b815b425cdb88)
1.6.2 Windows下MySQL数据库的导入与导出
Windows 下 MySQL 数据库的导入和导出相对简单,在此仅作简单的介绍。在后面的章节中,会结合实际应用介绍一些在Windows下使用客户端软件导入和导出MySQL数据库的方法。
1.通过mysqldump命令导入和导出
命令格式如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_4.jpg?sign=1739259312-X96msTpZ6FookmdFxWclQMKJj9I2AA5y-0-db01d8cba95e9efa7709823e39d78fc0)
把数据库db导出到backupdatabase20140916.sql文件,示例如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_5.jpg?sign=1739259312-ZgwWu3YWYWKEAbmwYUdcsDRdCDsPyqgu-0-64c51f8de3bab97cd6fa0c3995d663e0)
导入数据库的命令行,示例如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_6.jpg?sign=1739259312-38ZoyOe6s8O2MxoudVdcdGdI9R66vFsj-0-5d25f909069f3298d1eac4e26a3c0264)
把backupdatabase20140916.sql导入新建数据库db,示例如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_7.jpg?sign=1739259312-BoZxb7ran3m7Y2F1GMLranp5nooeDV4R-0-5aad599994e3b34141194ddfeb3cc5a0)
2.通过MySQL命令导入和导出
将数据库xxx导出到d盘根目录下的xxx.sql文件,示例如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_8.jpg?sign=1739259312-whTeK5b2cukZhiO6RDpNMtDmMFRx5hEj-0-6ce4afca79d8409edc7517e1d89fec43)
将数据库d盘下的xxx.sql文件导入数据库xxx,示例如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_9.jpg?sign=1739259312-mZy6uOamrsjrfF5nJpuymTXQRdqYVPgC-0-1f6114fca707a1e1853ad825417e9fe3)
登录MySQL以后,通过如下命令进行导入操作。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_50_10.jpg?sign=1739259312-aaDoyTXLDeT1EhRLoQGojgk5CXBew0oh-0-4bc9c1a4ed8abfefcdf828928c144302)
1.6.3 将html文件导入MySQL数据库
某些数据库,既不是sql文件,也不是txt、csv、xls等文件,而是html文件。数据在html文件中以表格的形式存在。打开该文件,数据以表格的形式展现,如图1-41所示。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_51_1.jpg?sign=1739259312-9QBGUGYEQSTaSnfm4FZKeA1fJCFU3KqO-0-a488febbd76b0af1785c95ce2f5e8b6b)
图1-41 以表格形式显示的数据
1.选择导入类型
Navicat系列软件支持多种类型的数据。如图1-42所示,单击选中“HTML文件(*.htm;*.html)”,然后单击“下一步”按钮。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_51_2.jpg?sign=1739259312-BdNnRIy4sjcmNxP2QArvBJz4nYf0sM2h-0-6d054dde47262a6afc398626ea4155a6)
图1-42 选择导入文件的类型
在其他类型的库的导入过程中,需要针对不同的类型进行选择。例如,对于xls文件,需要单击选中“Excel文件(*.xls)”。
2.查看文件的编码格式
在导入前,需要知道文件是以何种格式编码的。在本例中,使用记事本程序打开文件,单击“格式”菜单项,即可看到该文件是用UTF-8格式编码的。如图1-43所示,在导入时需要设置文件的编码方式,否则导入的数据在数据库中会显示为乱码。
3.选择编码方式
因为文件是用UTF-8格式编码的,所以在“编码”下拉列表中选择“65001(UTF-8)”选项,如图1-44所示。这一步很关键,如果编码格式选择错误,导入的数据将显示为乱码。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_52_1.jpg?sign=1739259312-2lYAghRRfVI0DVqr7m0r1ZxQWAcY6Tne-0-9880b0fc45263f13bd60cc143c093fa5)
图1-43 查看文件的编码方式
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_52_2.jpg?sign=1739259312-u7lGNBEcEHl2b9fXY6x2yv10Q3CT9moD-0-73210644a2028c1eeb44360fc5153f1d)
图1-44 选择编码
4.设置栏名称和起始数据行
如图1-45所示:输入数字“1”,设置导入数据的第一行为栏名称(如果设置第二行,则输入数字“2”);“第一个数据行”表示从第几行开始导入数据,在这里输入数字“1”,表示从第一行开始导入(如果输入数字“2”,则表示从第二行开始导入);“最后一个数据行”文本框可以为空。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_52_3.jpg?sign=1739259312-fO4qO7ki9oxYPI5ptY0GvLd9PfdqBSiI-0-8ec60e9deb60d1e8af802a4786cda9e4)
图1-45 设置栏名称和起始数据行
5.设置目标表和源表
设置目标表和源表,如图1-46所示(默认会显示同样的名称)。可以手动修改目标表的名称。此时,可以新建表,也可以选择数据库中已经存在的表。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_53_1.jpg?sign=1739259312-7RU0IAB31WifJzYEn9j1Sg5w0KO3qNyM-0-913a26e503c7178554d00464506d7160)
图1-46 设置目标表
6.设置目标表的栏名称
如图1-47所示,默认显示第一行数据为栏名称。可以对每一个目标栏名称进行设置,既可以使用默认名称,也可对其进行修改。同时,需要设置类型和长度等。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_53_2.jpg?sign=1739259312-D0TdwFCLW7sdJyprMAgngvfEFFA7SgZy-0-bd057ca72151e2c81313f7249be6f245)
图1-47 设置目标表的栏名称
然后,单击“下一步”按钮,在导入模式中选择“添加:添加记录到目标表”选项,进行数据的导入。
7.查看导入日志
在导入过程中会显示导入百分比。如果显示“100%”,表示已经导入全部数据。在导入向导窗口会显示导入日志,如图1-48所示,其中包含导入的文件、新建的表等信息。如果导入成功,会显示“Finished-Successfully”。如果在导入过程中出现了错误,可以将日志信息复制下来。单击“关闭”按钮,完成数据的导入。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_54_1.jpg?sign=1739259312-kAvLm7h7whsHNMnDeGETBUb1TTrc6Etr-0-1e2d1a5cdda92cd27e63c49b774bf9ca)
图1-48 查看日志
8.查看导入的数据
打开导入的数据库表,所有数据被正确地导入。接下来,就可以对数据进行查看和处理了。
1.6.4 将MSSQL数据库导入MySQL数据库
将MSSQL数据库导入MySQL数据库的操作,与将html文件导入MySQL数据库的操作基本相同。在“导入类型”中选择“ODBC”选项,设置数据连接属性为“Microsoft OLE DB Provider for SQL Server”,如图1-49所示。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_54_2.jpg?sign=1739259312-7QqnTpVnXQQ3VFvbpKXgREMmIOYJrzrI-0-87317dbcec70840b3de26893efbf9ed6)
图1-49 设置数据库连接属性
切换到“连接”标签页,输入服务器名称“.”(也可以输入IP地址或数据库服务器的名称,“.”表示本机或localhost)。输入登录服务器的信息,即设置数据连接方式是“使用Windows NT集成安全设置”还是“使用指定的用户名称和密码”。最后,选择一个数据库进行连接测试。如图1-50所示,如果显示“测试连接成功”,就可以进行后续操作。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_55_1.jpg?sign=1739259312-1YOs1hSdSfDgZkUPtP99E31DqpuU79tr-0-8b99f134f53d7743db2ee24e085e74f8)
图1-50 测试数据库连接
后续操作与将html文件导入MySQL数据库类似,在此就不赘述了。
1.6.5 将xls和xlsx文件导入MySQL数据库
将xls和xlsx文件导入MySQL数据库的步骤与前面介绍的大致相同,区别只是在导入这两种文件时需要选择表。
如图1-51所示,选择xlsx文件中存在数据的表,例如Sheet1和Sheet2。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_55_2.jpg?sign=1739259312-nOH2csC5aS01bwEFpxPTNSCbIdyUrYsi-0-68b42a7c9622d2d2b0717f0de0d1854f)
图1-51 导入xlsx文件
1.6.6 将xml文件导入Navicat for MySQL
笔者在对某网站进行渗透测试时发现,该网站会自动记录用户个人信息,生成log.txt文件。该文件已经超过700MB,使用记事本程序打开比较困难。如图1-52所示,使用浏览器查看该文件,发现其明显是以XML语法进行记录的。通过测试发现,使用Navicat for MySQL可以将该文件导入数据库,但前提是将该文件重命名为xml文件。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_56_1.jpg?sign=1739259312-1Zs3fYD0553ybtsdZ0P3hi7Qy3C3CUHn-0-4062f0402084ce56b45a7c7b1a6e5047)
图1-52 查看文件内容及其格式
下面介绍测试过程。
1.选择编码方式
打开Navicat for MySQL,选择一个数据库,依次选择“导入向导”→“导入类型”→“xml文件”选项。如图1-53所示,选择数据源(即需要导入的数据文件),同时设置编码格式为UTF-8。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_56_2.jpg?sign=1739259312-GCAUl3nBPKQCVaWfmheA4ow4ks5NCETz-0-35cc58ead2b56777ee35d59e18afead1)
图1-53 设置编码格式
注意
编码格式的选择是非常重要的。如果编码格式选择错误,不仅导入的数据库可能显示为乱码,还有可能在导入数据库的过程中直接出现错误,导致数据导入失败。
2.选择表字段
如图1-54所示,在下拉列表中选择一个值作为表行的标签。可以选择软件提供的值,也可以自行指定(其实就是表里面的字典)。然后,单击“下一步”按钮。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_57_1.jpg?sign=1739259312-QqhnDat3DXgqIksmtp2EeYVSHGILU46t-0-d71d0517a673ebb60046f3570c8c1d7d)
图1-54 选择表字段
3.设置数据行
如图1-55所示,如果第一个数据行是栏位名称,则将第一个数据行设置为“2”,否则设置为“1”,其他项保持默认设置即可。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_57_2.jpg?sign=1739259312-0PdhSkKjWjWzfLcRrUgIm5nnQ3YsuG9u-0-b3e89c6535d6202e52a5d0ecc3d157f6)
图1-55 设置数据的第一行和栏位名称
4.设置目标表的名称
如图1-56所示,源表是指要将其内容导入数据库的表,目标表是指导入后数据库中的表(软件会自动指定一个表),自动显示出来的目标表的名称为“log”。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_57_3.jpg?sign=1739259312-Mzg75dQisFddkwqqnA1Z2akIjHkObTjU-0-4fb30eb8089fce69b4e9a2614af3f59a)
图1-56 设置表名称
注意
在一些情况下,目标表名称如果为特殊字符(例如含有“.”等),将无法成功导入数据。因为这些字符在数据库中是禁止使用的,所以无法创建表。
5.设置导入表的栏位名称
如图1-57所示,Navicat for MySQL会自动识别xml文件中的字段名称,并将其转换为数据库能够接受的格式(即数据库栏位名称),因此一般保持默认设置即可。在特殊情况下,可能需要修改栏位名称所对应的数据库类型和长度。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_58_1.jpg?sign=1739259312-Lvobw9h8JLf2QUpJZ0wvedbD9Sv1yU6a-0-a7a0c6d17db61d8d6523ce296182b201)
图1-57 设置栏位名称
6.选择导入模式
Navicat for MySQL提供了五种导入模式,但在本例中只能使用其中的两种,一种是添加,另一种是复制,如图1-58所示。保持“添加:添加记录到目标表”的默认选中状态,后续设置均保持默认状态,即可开始导入数据。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_58_2.jpg?sign=1739259312-zaiLgaNLHxnRvCatq4NpmAr6kTqVf5uK-0-e2fa0c16be79e8e4ace1997701413ae1)
图1-58 选择导入方式
7.导入数据库
如图1-59所示,开始导入数据库。在该窗口中会显示数据导入进度、已处理数据的记录、错误信息、已添加数据的记录及耗费的时间等,窗口标题栏显示“100%”则表示导入成功。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_59_1.jpg?sign=1739259312-Zk6WRwy8KMlyCvtdtEJrdtcQupH9uxxA-0-d64656d2e1ae1f69a6e230102a55a15c)
图1-59 导入数据
8.后续处理
导入成功后,可以将一些无用的数据清理掉,命令如下。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_59_2.jpg?sign=1739259312-iCzGVwPNt7lzcCH1rdOgLX0R88ekbqS4-0-8b5d73a975125c82cac25e08121f9b47)
1.6.7 通过Navicat for MySQL代理导入数据
使用Navicat for MySQL进行数据库连接,可以通过HTTP通道实现。
1.在“常规”选项卡中设置
新建MySQL连接,设置连接名、主机名(本例为“localhost”)、端口和密码,如图1-60所示。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_59_3.jpg?sign=1739259312-odAwa5jd6NGEI7T7wF7b24GI040qOTv2-0-7d2485def051b4dfd2b8cc30392c973c)
图1-60 设置MySQL连接
2.使用HTTP通道
切换到“HTTP”标签页,勾选“使用 HTTP 通道”选项。如图1-61所示,在“通道地址”文本框中输入ntunnel_mysql.php文件的实际地址,单击“确认”按钮。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_60_1.jpg?sign=1739259312-sEmXo0sMMCudeDFJsCiLuWI0IgyMAmCc-0-1d51f8bd60eb98bf5801dd15046f29a0)
图1-61 使用HTTP通道
3.本地连接远程数据库
如图1-62所示,在Navicat for MySQL中双击新建数据库的地址,即可实现与该网站数据库的连接。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_60_2.jpg?sign=1739259312-GutIrOqIIbJ24MUnVGBQuAzYZS013SR9-0-2024a96a469d89f3ce86ff0c7c37bcf2)
图1-62 本地连接远程数据库
尽管有些网站是禁止远程连接数据库的,但攻击者在拥有WebShell的情况下,仍然可以将文件C:\Program Files(x86)\PremiumSoft\Navicat for MySQL\ntunnel_mysql.php复制到目标站点根目录或其他目录下,从而导出数据库。因此,在实际工作中,即使禁用了远程数据库连接,也需要经常对网站数据库的安全性进行检查。
1.6.8 导入技巧和错误处理
1.转码处理
使用记事本程序(或者其他文本编辑器)打开文件,在“格式”菜单中选择“转为UTF-8编码格式”选项,文件将以UTF-8编码格式进行编码,如图1-63所示。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_60_3.jpg?sign=1739259312-EonkP6QPl9kZ8ol9ywgwApBehvG8yaW1-0-55eb5350dac02002159592f81e92a18e)
图1-63 进行转码处理
2.出错继续
如图1-64所示,在正式将数据导入数据库之前,勾选“遇到错误继续”复选框,导入过程就不会因为导入数据的格式错误而终止了。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_61_1.jpg?sign=1739259312-rTyCSnvrWXDBEiWUUpzCdpZ1emroiueD-0-8f62ba445daf3687a264159a47616f88)
图1-64 出错继续
3.错误信息再处理
如图1-65所示,如果数据格式不全或编码中有多余的特殊字符,数据导入将会失败,没有被成功导入的数据会在日志中显示出来。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_61_2.jpg?sign=1739259312-QIaldnutnUIsM8W3gayxPuKlNuvkap7A-0-5d6e6057e55f7e8b4cbc5d540e07fcf2)
图1-65 错误信息再处理
将日志中的出错信息复制到记事本程序中,修改其中的错误并保存,然后在查询器中进行查询和导入。
如图1-66所示,一些sql文件在导出时使用了错误的编码,特别是中文字符,会在其中显示“?”。这时,需要进行替换操作。可以将“?”替换为“'”,重新运行sql文件。
![](https://epubservercos.yuewen.com/E55E1D/18279401208274706/epubprivate/OEBPS/Images/35530_61_3.jpg?sign=1739259312-8WG3Web4fPtL3zh9m8GJWYre61jlNm7i-0-2a0265fa177f92c784b52855a7208429)
图1-66 处理文件中的特殊字符