乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      [轉(zhuǎn)]MYSQL中的UDF – Can’t open shared library 的研究...

       ccccshq 2013-08-14

      UDF - User Defined Function 用戶自定義函數(shù) 。

      mysql中支持UDF擴(kuò)展 ,使得我們可以調(diào)用DLL里面的函數(shù)來實(shí)現(xiàn)一些特殊的功能。
      但是對于UDF的具體限制,MYSQL的各個版本各有不同。 下面記錄一下:

      聽說(只是聽說,沒做測試),在MYSQL 4.1以前的版本中,可以將所有的DLL文件里面的任何函數(shù)都注冊到MYSQL里面以供MYSQL調(diào)用。
      無論這個DLL在什么位置,函數(shù)的聲明是什么樣的。

      在MYSQL 4.1及以后的版本中,對UDF函數(shù)進(jìn)行了限制,只有實(shí)現(xiàn)了一個特定接口的函數(shù)才可以被成功注冊到MYSQL中,這樣就防止了通過MYSQL非法調(diào)用系統(tǒng)的DLL。

      在MYSQL5以后,對注冊的DLL的位置有了限制,創(chuàng)建函數(shù)的時候,所對應(yīng)的DLL不能包含/或者\(yùn),簡單的理解就是不能是絕對路徑。
      所以我們將DLL釋放到system32目錄,來跳過這個限制。?;蛘叻诺奖P符的根目錄下通過c:udf.dll這種形式的寫法來跳過限制。

      再說MYSQL5.1,這里有個問題相信大家會經(jīng)常遇到的。。
      大家有的時候在創(chuàng)建函數(shù)的時候,常常會遇到Can't open shared library 'udf.dll' (errno: 2) 這個錯誤。
      可是我們的語句沒有寫錯,DLL也是免殺的或者服務(wù)器上根本沒裝殺軟。。
      好多人這里就不明白了。。

      這是因?yàn)镸YSQL 5.1及以后的版本中,又多了一個限制。
      創(chuàng)建函數(shù)時所用的DLL只能放在mysql的plugin目錄里面。。
      而且這個plugin目錄默認(rèn)是不存在的。。挺YD吧,,可能就是為了防止通過into dumpfile將DLL來寫到這個文件夾。。
      MYSQL是無法創(chuàng)建目錄的哦, 如果into dumpfile的目標(biāo)目錄不存在是會報(bào)錯的。

      需要手動創(chuàng)建 ,但是它卻是一個系統(tǒng)變量。我在虛擬機(jī)上裝了MYSQL 5.1.3進(jìn)行了測試,
      安裝目錄是:C:\Program Files\MySQL\MySQL Server 5.1

      通過:show variables like '%plugin%';

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

      plugin目錄位置是mysql安裝目錄下的lib/plugin ,需要我們手動創(chuàng)建 。
      然后將udf.dll傳到這個位置,再創(chuàng)建函數(shù) ,這時就會成功了。

      但是這個變量的值是只讀的,嘗試用
      set @@plugin_dir = 'd:\\';

      去更改它的值會發(fā)生錯誤。

      只能通過修改php.ini ,在里面添加一個
      plugin_dir=d:/

      才可以修改這個值 。。
      無奈。。
      所以在導(dǎo)出UDF提權(quán)之前 ,先確定一下MYSQL的版本是有必要的。

      如果是5.1以后的,那就不行了,如果是5.1以前的版本創(chuàng)建函數(shù)的時候還報(bào)Can't open shared library這個錯誤。
      那就要看看DLL是不是真的被導(dǎo)出了,還是被殺軟隔離或者干掉了。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多