gdb在线修改mysql版本号

为了增加安全已经漏扫,进行MySQL修改版本号

修改任何信息前,都要仔细确认和验证. 最好是备份. 而不能备份的时候,最好是多个人复核一下再操作.(比如本教程这种修改内存的操作,没法备份,只能复核的时候仔细一点了.)

gdb正好就能做到修改内存中的参数变量. 也就是我们只需要找到对应的变量, 然后使用gdb来修改内存中的值即可

只修改内存中的值, 所以后续重启的时候还得修改, 不然就变回去了.

比如, 我们可以直接使用如下命令将所有变量全部保存到某个文件中

echo 'info variables'|gdb -p `pidof mysqld` > /tmp/mysql_variables_t20250115.txt

然后我们搜索version关键字就能找到如下信息

<data variable, no debug info> server_version;

这个(server_version)看起来就是mysql的版本值了, 然后我们只需要修改该值即可,比如我们可以将8.0.28修改为9.0.28 只需要执行如下命令即可

gdb -p `pidof mysqld` --batch --ex 'print server_version' --ex 'set server_version=774909488+9'

小版本对应哪个参数目前还没找到, 有兴趣的同学可以自己尝试下(建议在自己的测试环境验证, 有些变量修改之后会导致数据库dang掉, 有些参数甚至会破坏ibdata1.)