当前位置: 首页 > 科技观察

CentOS7下MySQLSniffer安装总结

时间:2023-03-19 00:11:04 科技观察

本文转载自微信公众号《DBA的杂记》,作者潇湘隐士。转载本文请联系DBA杂念公众号。抓包工具MySQLSniffer的安装看起来很简单。官方安装介绍如下:gitclonehttps://github.com/Qihoo360/mysql-sniffercdmysql-sniffermkdirprojcdprojcmake../makecdbin/虽然官方文档的安装介绍很简单,但其实有CentOS7下安装过程中的很多问题,如果你还没有踩过这些坑,建议你看看下面我踩过的一些坑。以下测试环境为CentOSLinuxrelease7.5.1804,不同版本或环境可能有所不同,请以实际为准。[root@KerryDB~]#more/etc/redhat-releaseCentOSLinuxrelease7.5.1804(Core)官方文档[1]提示MySQLSniffer依赖这几个包glib2-devel(2.28.8),libpcap-devel(1.4.0),libnet-devel(1.1.6),但其实它不仅依赖这三个包,还依赖下面一堆包。yuminstallcmakeyuminstalllibpcap-develyuinstallglib2-develyuinstalllibnet-develyuinstallgccyuinstallgcc-c++安装前必须执行以下脚本检查是否缺少相关依赖包,以免踩到一些坑。yumlistinstalled|grep-E"cmake|libpcap-devel|glib2-devel|libnet-devel|gcc|gcc-c++"下面是安装成功后的依赖包信息:[root@KerryDB~]#yumlistinstalled|grep-E"cmake|libpcap-devel|glib2-devel|libnet-devel|gcc|gcc-c++"cmake.x86_642.8.12.2-2.el7@basegcc.x86_644.8.5-44.el7@basegcc-c++.x86_644。8.5-44.el7@baseglib2-devel.x86_642.56.1-9.el7_9@updateslibgcc.x86_644.8.5-44.el7@baselibnet-devel.x86_641.1.6-7.el7@baselibpcap-devel.x86_6414:1.5.3-12.el7@base以下是我在安装过程中踩过的一些坑。如下图,cmake编译安装过程中报错。具体报错信息如下截图所示:"fatalerror:libnet.h:Nosuchfileordirectory"这个错误是因为缺少libnet-devel包,这里是查询验证时漏掉了这个包.安装下面的libnet-devel包后,上面的错误就解决了。#yuminstalllibnet-devel然后cmake编译安装还是报错:CMakeError:yourCXXcompiler:"CMAKE_CXX_COMPILER-NOTFOUND"wasnotfound。这是因为缺少包gcc-c++包。注意CentOS下的g++安装包名称为gcc-c++,与Centos和Ubuntu不同。安装命令如下:#yuminstallgccgcc-c++cmake编译成功。但是在make编译安装时,出现下面错误[root@KerryDBproj]#makeScanningdependenciessoftargetmysql-sniffer[16%]BuildingCobjectbin/CMakeFiles/mysql-sniffer.dir/main.c.o[33%]BuildingCobjectbin/CMakeFiles/mysql-sniffer.dir/mysql-dissector.c.o/root/klb/mysql-sniffer/src/mysql-dissector.c:Infunction'decode_mysql_lenenc_int':/root/klb/mysql-sniffer/src/mysql-dissector.c:112:5:warning:dereferencingtype-punnedpointerwillbreakstrict-aliasingrules[-Wstrict-aliasing]return*(int*)value;^[50%]BuildingCobjectbin/CMakeFiles/mysql-sniffer.dir/util.c.o[66%]BuildingCXXobjectbin/CMakeFiles/mysql-sniffer.dir/session.cpp.o[83%]BuildingCXXobjectbin/CMakeFiles/mysql-sniffer.dir/sniff-config.cpp.o/root/klb/mysql-sniffer/src/sniff-config.cpp:Infunction'intparse_cmdline_option(int,char**)':/root/klb/mysql-sniffer/src/sniff-config.cpp:183:9:warning:variable'opt_len'setbutnotused[-Wunused-but-set-variable]intopt_len;^[100%]构建CXXobjectbin/CMakeFiles/mysql-sniffer.dir/sniff-log.cpp.oLinkingCXXexecutablemysql-sniffer/usr/bin/ld:/root/klb/mysql-sniffer/lib/libgthread-2.0.a(gthread-impl.o):undefinedreferencetosymbol'pthread_setspecific@@GLIBC_2.2.5'//usr/lib64/libpthread.so.0:erroraddingsymbols:DSOmissingfromcommandlinecollect2:error:ldreturned1exitstatusmake[2]:***[bin/mysql-sniffer]Error1make[1]:***[bin/CMakeFiles/mysql-sniffer.dir/all]Error2make:***[all]Error2"makeerror#30"[2],建议修改配置文件mysql-sniffer/src/CMakeLists.txt解决修改前的问题然后重新编译安装就OK了,MySQLSniffer编译成功参考[1]mysql-sniff:https://github.com/Qihoo360/mysql-sniffer[2]makeerror#30:https://github.com/奇虎360/mysql-sniffer/issues/30