mysql udf 執行命令 mylab sys

2021-10-20 22:12:39 字數 2077 閱讀 7508

有時候為了方便,利用event/trigger呼叫系統外部命令,可因為安全問題,mysql自身並沒有提供相關命令,這裡提供個呼叫系統命令的自定義函式mylab_sys_exec

載入:createfunctionmylab_sys_exec returns integersoname"mylab_sys_exec.so";

使用:selectmylab_sys_exec('cmd');

原始碼:my_bool mylab_sys_exec_init(udf_init *initid, udf_args *args,char*message);voidmylab_sys_exec_deinit(udf_init *initid);intmylab_sys_exec(udf_init *initid, udf_args *args,char*is_null,char*error);

marco ivaldi 幾年前曾經發表過乙個 raptor_udf2.c,演示了如何利用mysql udf入侵系統,但是這個mysql udf也演示了乙個呼叫系統命令的方式。但是這一外掛程式目前應經不能相容mysql 5.0+,主要是已經不符合新的mysql udf的規範了,並且沒有返回結果。

mysql user-defined functions 是 roland bouman 開發的乙個新的呼叫系統命令的udf包,其中有三個函式:

sys_exec: 呼叫系統命令,執行外部程式

sys_get: 返回系統環境變數的值

sys_set: 設定系統環境變數

這一mysql udf 包是相容mysql 5.0+ ,同時支援linux和windows。但是這一包也有乙個問題,執行命令後返回是命令的exit_code ,而不是命令的執行結果。

bernardo damele a. g. 針對這一問題做了乙個更新包,增加了乙個sys_eval函式,這一函式命令執行成功返回執行結果,而如果錯誤返回null。

使用例項:

$ wget --no-check-certificate

$ tar xfz lib_mysqludf_sys_0.0.3.tar.gz

$ cd lib_mysqludf_sys_0.0.3

$ sudo ./install.sh

compiling the mysql udf

gcc -wall -i/usr/include/mysql -i. -shared lib_mysqludf_sys.c -o /usr/lib/lib_mysqludf_sys.so

mysql udf compiled successfully

please provide your mysql root password

enter password:

mysql udf installed successfully

$ mysql -u root -p mysql

enter password:

mysql> select sys_eval('id');

| sys_eval('id') |

| uid=118(mysql) gid=128(mysql) groups=128(mysql) |

1 row in set (0.02 sec)

mysql> select sys_exec('touch /tmp/test_mysql');

| sys_exec('touch /tmp/test_mysql') |

| 0 |

1 row in set (0.02 sec)

mysql> exit

bye$ ls -l /tmp/test_mysql

-rw-rw---- 1 mysql mysql 0 2009-01-16 23:18 /

cmd 執行命令

一 一鍵開啟執行 開啟 執行 視窗,都是通過 開始 選單中的命令來完成的。其實我們可以為執行建立乙個快捷方式,一鍵開啟執行視窗。右擊桌面上的快捷方式,開啟屬性視窗。切換到 快捷鍵 方式選項卡,在 快捷鍵 裡面輸入乙個按鍵,然後單擊 確定 按鈕,這樣我們要開啟執行視窗時只需要按下該快捷鍵即可。二 快速...

後台執行命令

1.cron是系統主要的排程程序,可以在無需人工干預的情況下執行作業。有乙個叫做crontab的命令允許使用者提交 編輯或刪除相應的作業。2.crob的域 第1列 分鐘1 59 第2列 小時1 23 0表示子夜 第3列 日1 31 第4列 月1 12 第5列 星期0 6 0表示星期天 第6列 要執行...

遠端執行命令

遠端執行命令 這個分兩步,很簡單很實用。第一步,設定ssh免認證,免認證就是只不用密碼認證就可以直接登入,這在寫指令碼伺服器控制時特別有用。ssh keygen t rsa cd ssh ssh copy id xuexi01注 xuexi01是主機名,也可寫成ip,如192.168.2.11 第二...