当前位置:七道奇文章资讯安全技术网络技术
日期:2010-03-08 04:02:00  来源:本站整理

MYSQL中的UDF - Can't open shared library 的研究[网络技术]

赞助商链接



  本文“MYSQL中的UDF - Can't open shared library 的研究[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

Ninty 's blog
mysql中支持UDF扩大 ,使得我们可以调用DLL里面的函数来实现一些特别的功效.
但是关于UDF的具体限制,MYSQL的各个版本各有差别. 下面记录一下:

据说(只是据说,没做测试),在MYSQL 4.1从前的版本中,可以将全部的DLL文件里面的任何函数都注册到MYSQL里面以供MYSQL调用.
无论这个DLL在什么位置,函数的声明是什么样的.

在MYSQL 4.1及今后的版本中,对UDF函数举行了限制,只有实现了一个特定接口的函数才可以被成功注册到MYSQL中,
这样就避免了通过MYSQL不法调用系统的DLL.

在MYSQL5今后,对注册的DLL的位置有了限制,成立函数的时刻,所对应的DLL不能包含/大概\,简单的理解就是不能是绝对途径.
所以我们将DLL释放到system32目录,来跳过这个限制..大概放到盘符的根目录下通过c:udf.dll这种情势的写法来跳过限制.

经过28ice大牛的提醒,发现本来只要把dll放到PATH这个环境变量所表示的任何一个目录下面,效果跟放到system32目录下面一样.
也可以利用.

再说MYSQL5.1,这里有个问题相信大家会常常碰到的..
大家有的时刻在成立函数的时刻,常常会碰到

这个错误.但是我们的语句没有写错,DLL也是免杀的大概服务器上根本没装杀软..
好多人这里就不懂得了..

这是因为MYSQL 5.1及今后的版本中,又多了一个限制.
成立函数时所用的DLL只能放在mysql的plugin目录里面..
并且这个plugin目录默许是不存在的..挺YD吧,,大概就是为了避免通过into dumpfile将DLL来写到这个文件夹..
MYSQL是无法成立目录的哦, 假如into dumpfile的目标目录不存在是会报错的.

需求手动成立 ,但是它倒是一个系统变量.
我在虚拟机上装了MYSQL 5.1.3举行了测试,安装目录是:

通过:

view source
print?1 show variables like '%plugin%';


可以看到:
+---------------+------------------------------------------------------------------------
| Variable_name | Value
+---------------+-------------------------------------------------------------------------
| plugin_dir    | C:\Program Files\MySQL\MySQL Server 5.1\lib/plugin
+---------------+-------------------------------------------------------------------------

plugin目录位置是mysql安装目录下的lib/plugin ,需求我们手动成立 .
然后将udf.dll传到这个位置,再成立函数 ,这时就会成功了.

但是这个变量的值是只读的,尝试用

view source
print?1 set @@plugin_dir = 'd:\\';


去更改它的值会发生错误.

只能通过改正php.ini ,在里面增添一个

才可以改正这个值 ..
无奈..
所以在导出UDF提权之前 ,先肯定一下MYSQL的版本是有必要的.

假如是5.1今后的,那就不行了,假如是5.1从前的版本成立函数的时刻还报Can't open shared library这个错误.
那就要看看DLL是不是真的被导出了,还是被杀软断绝大概干掉了.


  以上是“MYSQL中的UDF - Can't open shared library 的研究[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Windows 搭配 IIS7 PHP MySQL 环境
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • mysql数据库插入速度和读取速度的调整记录
  • MySQL Order By索引优化办法
  • MySQL Order By用法分享
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
  • MySQL Order By Rand()效率解析
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .