mysql-udf-http說明
- 此套件的用途為讓mysql bash也能執行HTTP請求(POST, GET…)
- 可透過Trigger調用API
此路徑為CentOS下使用yum install安裝mysql後實際路徑
mysql安裝路徑
/var/lib/mysql
插件資料夾原始路徑
/usr/lib64/mysql/plugin
mysql安裝路徑相關查詢方法
1.使用mysql shell查詢安裝檔案路徑
mysql> show variables like "%datadir%";
2.查詢mysql相關資料夾及檔案
whereis mysql
mysql_udf_http安裝說明
1.下載mysql_udf_http壓縮檔
2.解壓縮
tar zxvf mysql-udf-http-1.0.tar.gz
3.進入資料夾
cd mysql-udf-http-1.0/
4.編譯安裝檔(注意--prefix內路徑需改為mysql實際安裝路徑)
./configure --prefix=/var/lib/mysql --with-mysql=/etc/my.cnf
- 如果提示缺少libcurl,需安裝curl
yum install curl*
5.安裝
make && make install
- 如果報錯,說明缺少mysql源代碼文件(mysql-devel)
#需安裝mysql-devel
yum install mysql-devel
安裝完header檔路徑為/usr/include/mysql
回到第4部重新編譯後安裝
若是安裝完mysql-devel仍然報錯,需將header檔複製到解壓縮後資料夾/src底下,重新編譯後安裝
6.如果安裝後沒有報錯,mysql_udf_http插件實際安裝路徑
/var/lib/mysql/lib/
須將此路徑軟連結到實際插件路徑(前為mysql_udf_http實際安裝路徑,後為plugin路徑,plugin路徑後須加上.so檔)
ln -s /var/lib/mysql/lib/mysql-udf-http.so /usr/lib64/mysql/plugin/mysql-udf-http.so
7.使用mysql shell註冊幾個可使用的函數
mysql> create function http_get returns string soname 'mysql-udf-http.so';
mysql> create function http_post returns string soname 'mysql-udf-http.so';
mysql> create function http_put returns string soname 'mysql-udf-http.so';
mysql> create function http_delete returns string soname 'mysql-udf-http.so';
註冊成功無報錯,即可正常使用
mysql_udf_http使用方法
1.配合mysql trigger使用方式
SELECT http_post('http://XXX.XXX.XXX.XXX/api/test', 'key=value&key=value') INTO @tmp;
最後的INTO @tmp必須加上(trigger不允許返回結果集),否則報錯
2.mysql shell使用方式
mysql> SELECT http_post('http://XXX.XXX.XXX.XXX/api/test', 'key=value&key=value');
MySQL8使用者注意
MySQL8改變了部分名稱,按照上面流程make & make install時會報錯如下:
mysql-udf-http.c:8:1: error: unknown type name ‘my_bool’
my_bool http_get_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
^
mysql-udf-http.c:12:1: error: unknown type name ‘my_bool’
my_bool http_post_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
^
mysql-udf-http.c:16:1: error: unknown type name ‘my_bool’
my_bool http_put_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
^
mysql-udf-http.c:20:1: error: unknown type name ‘my_bool’
my_bool http_delete_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
^
mysql-udf-http.c:52:1: error: unknown type name ‘my_bool’
my_bool http_get_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
^
mysql-udf-http.c:125:1: error: unknown type name ‘my_bool’
my_bool http_post_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
^
mysql-udf-http.c:203:1: error: unknown type name ‘my_bool’
my_bool http_put_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
^
mysql-udf-http.c:282:1: error: unknown type name ‘my_bool’
my_bool http_delete_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
^
make[2]: *** [mysql-udf-http.lo] Error 1
make[2]: Leaving directory `/root/mysql-udf-http-1.0/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/mysql-udf-http-1.0/src'
make: *** [all-recursive] Error 1
原因為MySQL8裡沒有my_bool
,須將/src/mysql-udf-http.c
中的my_bool
改為_Bool
更改完後重新編譯後再安裝應該就不會報錯了
參考網頁
https://blog.csdn.net/HAOWENQI008/article/details/79110089
https://blog.csdn.net/weixin_30381317/article/details/95407079?tdsourcetag=s_pctim_aiomsg
https://www.jianshu.com/p/b1b794e12013
https://blog.csdn.net/m0_37952030/article/details/90745286
https://blog.csdn.net/qq_40914968/article/details/81382988
Comments | NOTHING