CentOS 7下MySQL Sniffer安裝總結


MySQL Sniffer這款抓包工具的安裝看似非常簡單,官方的安裝介紹如下所示:

 

 
git clone https://github.com/Qihoo360/mysql-sniffer
cd mysql-sniffer
mkdir proj
cd proj
cmake ../
make
cd bin/

 

雖然官方文檔的安裝介紹非常簡單,但是實際上,在CentOS 7下面安裝過程中問題多多,如果你沒有踩過這些坑的話,建議你看看下面我踩過的一些坑。下面測試環境為CentOS Linux release 7.5.1804可能不同版本或環境有所區別,請以實際情況為准。

 

[root@KerryDB ~]# more /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 

 

官方文檔https://github.com/Qihoo360/mysql-sniffer提示,MySQL Sniffer依賴這些包glib2-devel(2.28.8)libpcap-devel(1.4.0)libnet-devel(1.1.6),但是實際上它不僅僅只依賴這三個包,而是下面一堆包。

 

 

yum install cmake
 
yum install libpcap-devel
 
yum install glib2-devel
 
yum install libnet-devel
 
yum install gcc
 
yum install gcc-c++

 

在安裝前,你必須執行下面腳本檢查是否缺少相關依賴包,避免踩到一些坑。

 

yum list installed | grep -E "cmake|libpcap-devel|glib2-devel|libnet-devel|gcc|gcc-c++"

 

 

下面是成功安裝后,查詢依賴包的信息:

 

[root@KerryDB ~]# yum list installed | grep -E "cmake|libpcap-devel|glib2-devel|libnet-devel|gcc|gcc-c++"
cmake.x86_64                           2.8.12.2-2.el7                  @base    
gcc.x86_64                             4.8.5-44.el7                    @base    
gcc-c++.x86_64                         4.8.5-44.el7                    @base    
glib2-devel.x86_64                     2.56.1-9.el7_9                  @updates 
libgcc.x86_64                          4.8.5-44.el7                    @base    
libnet-devel.x86_64                    1.1.6-7.el7                     @base    
libpcap-devel.x86_64                   14:1.5.3-12.el7                 @base 

 

 

下面是我安裝過程中踩到的一些坑,如下所示,cmake編譯安裝過程中報錯,具體錯誤信息如下截圖所示

 

 

clip_image001

 

 "fatal error: libnet.h: No such file or directory"這個錯誤是因為缺少libnet-devel包,當時是因為查詢驗證時遺漏了這個包。安裝下面libnet-devel包后,上面錯誤解決。

 

# yum install libnet-devel

 

 

然后cmake編譯安裝依然報錯:CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.  這里是因為缺少包gcc-c++包

 

 

clip_image002

 

注意,CentOS下的g++安裝包的名字叫做gcc-c++,這是與Centos與Ubuntu不同的地方。安裝命令如下:

 

#yum install gcc gcc-c++

 

 

然后cmake編譯成功。

 

clip_image003

 

 

但是make編譯安裝時,出現下面錯誤

 

[root@KerryDB proj]# make
Scanning dependencies of target mysql-sniffer
[ 16%] Building C object bin/CMakeFiles/mysql-sniffer.dir/main.c.o
[ 33%] Building C object bin/CMakeFiles/mysql-sniffer.dir/mysql-dissector.c.o
/root/klb/mysql-sniffer/src/mysql-dissector.c: In function ‘decode_mysql_lenenc_int’:
/root/klb/mysql-sniffer/src/mysql-dissector.c:112:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
     return *(int*)value;
     ^
[ 50%] Building C object bin/CMakeFiles/mysql-sniffer.dir/util.c.o
[ 66%] Building CXX object bin/CMakeFiles/mysql-sniffer.dir/session.cpp.o
[ 83%] Building CXX object bin/CMakeFiles/mysql-sniffer.dir/sniff-config.cpp.o
/root/klb/mysql-sniffer/src/sniff-config.cpp: In function ‘int parse_cmdline_option(int, char**)’:
/root/klb/mysql-sniffer/src/sniff-config.cpp:183:9: warning: variable ‘opt_len’ set but not used [-Wunused-but-set-variable]
     int opt_len;
         ^
[100%] Building CXX object bin/CMakeFiles/mysql-sniffer.dir/sniff-log.cpp.o
Linking CXX executable mysql-sniffer
/usr/bin/ld: /root/klb/mysql-sniffer/lib/libgthread-2.0.a(gthread-impl.o): undefined reference to symbol 'pthread_setspecific@@GLIBC_2.2.5'
//usr/lib64/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [bin/mysql-sniffer] Error 1
make[1]: *** [bin/CMakeFiles/mysql-sniffer.dir/all] Error 2
make: *** [all] Error 2

 

make 報錯 #30,提示通過修改配置文件mysql-sniffer/src/CMakeLists.txt來解決

 

修改前

 

clip_image004

 

修改后

 

clip_image005

 

 

重新編譯安裝就OK了,MySQL Sniffer順利編譯成功。

 

 

參考資料:

 

https://github.com/Qihoo360/mysql-sniffer/issues/30

https://github.com/Qihoo360/mysql-sniffer


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM