暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL Macafee audit审计插件重编译

IT那活儿 4天前
4

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


背 景

由于审计插件版本不再更新,使用旧的审计插件在新版本的mysql上无法正常安装,尝试使用新版本的MySQL源码包重新编译安装审计插件。

本实验以8.0.33为例。


编译安装准备工作

2.1 源码包获取

审计插件源码包:

https://github.com/trellix-enterprise/mysql-audit

mysql源码包:

https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.33.tar.gz

需要GCC10以上的版本:

2.2 软件安装

编译安装GCC10以上的版本还需要GMP4.2+,MPFR3.1.0+,MPC 0.8.0+,这里全部安装最新版本。

软件下载地址:

 http://ftp.gnu.org/gnu/   直接全部下载最新的即可。

安装的顺序依次为:gmp,mpfr, mpc,最后安装gcc。

1)安装GMP

tar -xvf gmp-6.3.0.tar.xz

cd gmp-6.3.0

./configure  --prefix=/home/mysql/software/source/gmp

Make && make install

复制

2)安装MPFR

tar -xvzf mpfr-4.2.1.tar.gz

cd mpfr-4.2.1

./configure --prefix=/home/mysql/software/source/mpfr --with-gmp=/home/mysql/software/source/gmp

make && make install

复制

3)安装mpc

tar -xvzf mpc-1.3.1.tar.gz

cd mpc-1.3.1

./configure --prefix=/home/mysql/software/source/mpc --with-gmp=/home/mysql/software/source/gmp --with-mpfr=/home/mysql/software/source/mpfr

make && make install

复制

4)安装GCC

tar xvzf gcc-13.2.0.tar.gz

cd gcc-13.2.0

./configure --prefix=/home/mysql/software/source/gcc --disable-multilib --enable-threads=posix --disable-checking --enable--long-long --enable-languages=c,c++ --with-gmp=/home/mysql/software/source/gmp --with-mpfr=/home/mysql/software/source/mpfr --with-mpc=/home/mysql/software/source/mpc

make && make install

复制

安装时间较久。

5)升级glibc库

参考: strings lib64/libstdc++.so.6 | grep GLIBC

切换root:

strings lib64/libstdc++.so.6 | grep GLIBC

find / -name "libstdc++.so*"

cp /home/mysql/software/source/gcc-13.2.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.32 /lib64/

rm lib64/libstdc++.so.6

ln –s lib64/libstdc++.so.6.0.32 libstdc++.so.6

strings lib64/libstdc++.so.6 | grep GLIBC

复制

正式步骤

参考:

https://github.com/zhaopinglu/mysql-audit/blob/master/Note_for_MySQL8.0.33.md#a-quick-note-on-bulding-mysql-audit-for-mysql-8033

techblog.kerya.net | 521: Web server is down

准备:

yum install -y glibc-devel libtirpc-devel rpcgen libtool

Extract mysql 8.0.33 source code into mysql-audit code folder:

cd mysql-audit-1.1.13
tar xvzf ../mysql-boost-8.0.37.tar.gz

Build MySQL 8.0.33
cd mysql-8.0.37/
cmake3 -DFORCE_INSOURCE_BUILD=1 -DWITH_BOOST=boost -DCMAKE_C_COMPILER=/home/mysql/software/source/gcc/bin/gcc -DCMAKE_CXX_COMPILER=/home/mysql/software/source/gcc/bin/g++
make -j`nproc --all` -C libservices
make -j`nproc --all` -C include
Modify mysql-audit source code
cd mysql-audit-1.1.13
perl -pi -e 's/TABLE_LIST/Table_ref/g'`grep -rlw TABLE_LIST include/ src/ offset-extract/`

Replace: "my_charset_utf8_general_ci" To "my_charset_utf8mb3_general_ci" And "my_charset_utf8_bin" To "my_charset_utf8mb3_bin"
src/audit_handler.cc:
836-#else
837/*
  838- TODO: Migrate the data itself to UTF8MB4,
  839- this is still UTF8MB3 printed in a UTF8MB4 column.
  840- */

841const char *well_formed_error_pos = NULL, *cannot_convert_error_pos = NULL,
842- *from_end_pos = NULL;
843- copy_length = well_formed_copy_nchars(
844//&my_charset_utf8_bin
845- &my_charset_utf8mb3_bin
1090-#if defined(MARIADB_BASE_VERSION) && MYSQL_VERSION_ID >= 100504
1091- &my_charset_utf8mb3_general_ci,
1092-#else
1093//&my_charset_utf8_general_ci,
1094- &my_charset_utf8mb3_general_ci,

Build mysql-audit
cd mysql-audit-1.1.13
chmod +x bootstrap.sh
./bootstrap.sh
CXX='/home/mysql/software/source/gcc/bin/gcc -static-libgcc' CC='/home/mysql/software/source/gcc/bin/gcc -static-libgcc' ./configure --with-mysql=mysql-8.0.37 --with-mysql-libservices=mysql-8.0.37/libservices/libmysqlservices.a

perl -pi -e 's/automake-1.15/automake/g' pcre/Makefile
perl -pi -e 's/aclocal-1.15/aclocal/g' pcre/Makefile
alternatives --config python
make -j`nproc --all`

Install
cp src/.lib/libaudit_plugin.* /usr/lib64/mysql/plugin/.
chmod +x /usr/lib64/mysql/plugin/libaudit*

复制


END


本文作者:若 晗(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论