`

mysql udf 的实现过程

阅读更多
首先编写一个实现curl提交的udf,文件名起名为lib_mysqludf_clearcache.c
mysql udf 编写的相关规范可以查看mysql官方手册
http://dev.mysql.com/doc/refman/5.1/zh/extending-mysql.html#adding-functions


#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) || defined(WIN32)
#define DLLEXP __declspec(dllexport) 
#else
#define DLLEXP
#endif

#ifdef STANDARD
#include <string.h>
#include <stdlib.h>
#include <time.h>
#ifdef __WIN__
typedef unsigned __int64 ulonglong;
typedef __int64 longlong;
#else
typedef unsigned long long ulonglong;
typedef long long longlong;
#endif /*__WIN__*/
#else
#include <my_global.h>
#include <my_sys.h>
#endif
#include <mysql.h>
#include <m_ctype.h>
#include <m_string.h>
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>

#include <ctype.h>


#define DEST_URL "http://www.web.com/"

my_bool clear_cache_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
  return 0;
}

void clear_cache_deinit(UDF_INIT *initid)
{

}

char *clear_cache(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error)
{
    CURL *curl;  
    CURLcode res;  
      
    // 初始化curl  
    curl = curl_easy_init();  
      
    if(curl != NULL)  
    {  
        // 设置目标url  
        curl_easy_setopt(curl,CURLOPT_URL,DEST_URL);  
          
        // 输出header头部信息  
        curl_easy_setopt(curl,CURLOPT_HEADER,0);  
          
        // 执行操作  
        res = curl_easy_perform(curl);  
          
        // 执行回收资源  
        curl_easy_cleanup(curl);  
    } 
	
	return 0;
}



然后编译生成so文件
gcc  -I /usr/include/mysql -shared  lib_mysqludf_clearcache.c  -o lib_mysqludf_clearcache.so -lcurl

第三步把lib_mysqludf_clearcache.so复制到mysql的插件目录
cp lib_mysqludf_clearcache.so /usr/lib/mysql/plugin/

第四步进入mysql
执行
CREATE FUNCTION clear_cache RETURNS INTEGER SONAME 'lib_mysqludf_clearcache.so';

然后执行 select clear_cache()查看自定义函数是否执行成功

分享到:
评论

相关推荐

    MYSQL_UDF-5.0.rar_mysql udf_udf_udf mysql

    MySQL UDF(User Defined Function)是MySQL数据库系统中的一种扩展机制,允许用户自定义函数以满足特定的计算或处理需求。这些自定义函数通常用C或C++编写,然后编译为动态链接库(DLL),供MySQL服务器调用。本...

    mysql udf c文件

    MySQL UDF(User Defined Function)是指用户自定义函数,它允许开发者使用C或C++语言扩展MySQL的功能,创建个性化的数据库操作。这个压缩包包含了针对不同操作系统平台的MySQL UDF C语言源码,包括Windows 32位和64...

    MYSQL的UDF开发的资源文件

    在MySQL中,UDF主要分为三类:C语言编写的二进制UDF、存储过程和Java插件。这里我们主要关注C语言编写的二进制UDF,因为这是最常见且灵活性最高的方式。 1. **创建UDF的基本步骤** - **编写源代码**:使用C或C++...

    mysql提权udf

    MySQL UDF(User Defined Function)是指用户自定义函数,它允许开发者扩展MySQL数据库系统的功能,创建自己的函数以处理特定的数据操作。在网络安全领域,"mysql提权udf"常常指的是利用UDF进行权限提升的技巧,这...

    MYSQL的UDF开发的测试程序

    MySQL的UDF(User Defined Function)开发是数据库系统中一种...总之,MySQL UDF的开发是一个结合数据库理论与编程技术的过程,通过这个测试程序,开发者能够深入理解UDF的工作原理,并提升在实际应用中的开发技能。

    MYSQL高版本低版本UDF提权工具

    攻击者可能利用UDF来绕过权限限制,执行恶意代码,实现对数据库系统的控制,这就是所谓的“UDF提权”。这通常发生在系统管理员未能正确配置权限或者存在安全漏洞的情况下。例如,攻击者可能会创建一个能执行系统命令...

    Linux利用UDF库实现Mysql提权

    要实现这一过程,我们需要满足以下条件: 1. **环境准备**:操作系统是Linux,例如这里使用的BT5(BackTrack 5),内核版本为3.2.6。UDF库文件需要与操作系统架构匹配,如64位或32位。 2. **MySQL配置**:MySQL...

    mysql-udf-http-1.0下载

    总之,`mysql-udf-http-1.0` 是一个实用的工具,为 MySQL 添加了 HTTP 请求功能,使数据库能够直接与 Web 服务进行交互,简化了集成过程。然而,使用时需谨慎,确保遵循最佳实践以保护数据库的安全并保持良好的性能...

    mysql 计算字符串相似度

    本节将详细介绍 `sfn_GetSimilar_Rate` 函数的设计与实现过程,该函数接收两个中文字符串作为参数,返回它们之间的相似度值。 ##### 函数定义 ```sql DELIMITER $$ CREATE DEFINER=`irap`@`%` FUNCTION `sfn_...

    MySQL UDF cURL:在 MySQL 中用于 cURL 的用户定义函数-开源

    在 MySQL 中使用 UDF cURL 需要安装特定的库文件 `lib_mysqludf_curl`,这个库包含了 cURL 功能的实现。安装过程通常涉及编译和链接步骤,需要确保系统已经安装了 MySQL 的开发库和 cURL 开发库。一旦完成安装,就...

    mysql_microsecnow:Mysql UDF 添加一个返回微秒的 NOW() 克隆

    6. **注意事项**:请注意,不同版本的MySQL可能对UDF的支持和安装过程有所不同,因此在实际操作时应查阅对应MySQL版本的文档。此外,增加高精度时间戳可能会对数据库性能产生轻微影响,因为它需要更多的计算资源。 ...

    MySQL UDF调试方式debugview的相关方法

    MySQL UDF(User Defined Function)调试是数据库开发者和管理员经常面临的问题,特别是在处理自定义功能时。本篇文章将详细介绍如何使用debugview工具进行MySQL UDF的调试。 MySQL UDF本质上是一个不需要设定入口...

    MySQL实现递归查询的三种方式.rar

    在MySQL中,自定义函数(User Defined Function, UDF)可以扩展其内置功能,帮助我们处理复杂的数据操作,包括递归查询。通过编写存储过程或函数,我们可以定义一个递归逻辑来遍历层次结构。例如,如果我们有一个...

    通过Gearman来同步Mysql和Redis

    本篇将深入探讨如何利用Gearman、PHP、MySQL UDF(用户定义函数)等工具和技术来实现MySQL到Redis的数据同步。 #### MySQL与Redis的配合使用 MySQL作为一款关系型数据库管理系统,在数据持久化方面表现出色;而...

    UDF 源项,udf源项编程问题,C,C++源码.zip

    例如,在MySQL中,你需要实现一个`my_udf`函数,遵循特定的接口规定。 - 定义函数原型,例如在MySQL中,UDF函数需要遵循`my_int_func`的结构,它包含`init`, `evaluate`和`cleanup`等方法。 - 编译源代码为动态...

    UDF手册,udf手册2020,C,C++源码.zip

    在C和C++中实现UDF,通常需要遵循特定的接口规范,比如MySQL的C API或者PostgreSQL的Pro*C。这些API提供了创建和注册UDF的机制。例如,在MySQL中,开发者需要定义一个函数指针,该指针指向一个处理函数,该函数接受...

    raptor_udf.zip_backdoor_it_raptor_udf

    这表明我们要讨论的是一个特定类型的数据库后门,可能与名为“Raptor”的特定UDF实现有关。 在提供的压缩包文件列表中,我们有两个文件: 1. **raptor_udf.c**:这是一个C语言源代码文件,很可能包含了所谓的...

    开源项目-dveeden-udf_fileexists_go.zip

    2. `src`或`src/udf_fileexists_go`:存放源代码,包括Go语言编写的UDF实现。 3. `Makefile`:构建脚本,用于编译和安装UDF到MySQL服务器。 4. `example.sql`或`test.sql`:示例SQL语句,展示如何在查询中使用`file...

    UDF手册,udf手册2020,C,C++源码.rar

    2. **UDF开发环境**:讲解如何设置开发环境,包括安装必要的编译器和数据库开发库,如MySQL的`mysqludf`库或PostgreSQL的`PL/C`接口。 3. **函数原型**:展示UDF函数原型的定义,包括输入参数类型、返回值类型以及...

Global site tag (gtag.js) - Google Analytics