mysql5.7安装插件udp(lib_mysqludf_sys)

项目应用中需要用mysql执行一下命令行.几经搜索可以安装lib_mysqludf_sys插件可以实现

本地window环境安装(mysql8.0 , 64位 , 使用lib_mysqludf_sys.dll文件)

-- 查看环境中插件目录
show variables like '%plugin%';
-- plugin_dir	C:/mysql/lib/plugin/

-- 将lib_mysqludf_sys.dll文件放在插件目录中
-- 这里要注意32位和64位是有区别的,并不能通用

-- 删除已存在的函数
DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;
DROP FUNCTION IF EXISTS sys_get;
DROP FUNCTION IF EXISTS sys_set;
DROP FUNCTION IF EXISTS sys_exec;
DROP FUNCTION IF EXISTS sys_eval;

-- 创建函数
CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';

-- 执行测试
SELECT sys_exec('whoami');

测试centos7环境(mysql5.7.40 , 64位 , lib_mysqludf_sys.so)

-- 查看环境中插件目录
show variables like '%plugin%';
-- plugin_dir	/usr/lib64/mysql/plugin/

-- 将lib_mysqludf_sys.so文件放在插件目录中
-- 这里要注意32位和64位是有区别的,并不能通用

-- 问题1.lib_mysqludf_sys.c:40:23: 致命错误:<my_global.h>:没有那个文件或目录
-- 造成原因是少了mysql的开发组件,需要单独安装 , rpm安装对应版本的组件库
-- rpm -ivh mysql-community-devel-5.7.40-1.el7.x86_64.rpm 
-- 问题2.没有正确的lib_mysqludf_sys.so文件需要单独编译
-- make & makeinstall 才行
-- 问题3.make & makeinstall的时候报错没有c的环境 , yum安装一下
-- yum install gcc gcc-c++
-- 问题4.在make & makeinstall之前,需要修改一下Makefile因为里面的路径不对需要改一下 , 如果还报其他错应该还是少其他包 , 百度自行安装一下
-- LIBDIR=/usr/lib
--
-- install:
--         gcc -fPIC -Wall -m64 -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o /usr/lib64/mysql/plugin/lib_mysqludf_sys.so
-- 里面的路径根据自己的环境修改


-- 删除已存在的函数
DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;
DROP FUNCTION IF EXISTS sys_get;
DROP FUNCTION IF EXISTS sys_set;
DROP FUNCTION IF EXISTS sys_exec;
DROP FUNCTION IF EXISTS sys_eval;

-- 创建函数
CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';

-- 执行测试
SELECT sys_exec('whoami');

 

 

其中使用到的各种文件:

 

1.lib_mysqludf_sys.dll

https://github.com/sqlmapproject/sqlmap/issues/2965 这个里面往下翻有个lib_mysqludf_sys_64.zip的地址

2.lib_mysqludf_sys.so

11年前有人制作的插件,根据上面的描述重新编译即可

3.mysql-community-devel-5.7.40-1.el7.x86_64.rpm

mysql的官网可以下,贴个地址

热门相关:至尊龙帝陆鸣   至尊龙帝陆鸣   至尊剑皇   你好,墨先生   至尊剑皇