MySQL使用udf调用系统程序
2016-05-06 13:30
561 查看
需要在mysql里调用系统程序执行,这个功能mysql默认不提供,但可以通过定义udf(自定义函数)实现。好在开源社区里已经有人为我们实现这个程序了。
1.下载lib_mysqludf_sys程序:https://github.com/mysqludf/lib_mysqludf_sys
2.解压文件,在源码目录里编译源代码:
gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so
3.在mysql里查询mysql插件目录的路径:
show variables like “plugin_dir”;
再将编译好的lib_mysqludf_sys.so文件拷贝至mysql插件目录下。
4.在mysql中执行如下sql创建函数
到此mysqludf就安装完了,只要在sql里使用函数sys_exec()就能调用系统程序了。
注意:在编译源码时,可能会出现如下错误
In file included from lib_mysqludf_sys.c:40:
/usr/include/mysql/my_global.h:626:25: error: my_compiler.h: No such file or directory
这是一个mysql的bug引起的错误,只要修改/usr/include/mysql/my_global.h文件,注释掉626行重新编译就可以了。
1.下载lib_mysqludf_sys程序:https://github.com/mysqludf/lib_mysqludf_sys
2.解压文件,在源码目录里编译源代码:
gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so
3.在mysql里查询mysql插件目录的路径:
show variables like “plugin_dir”;
再将编译好的lib_mysqludf_sys.so文件拷贝至mysql插件目录下。
4.在mysql中执行如下sql创建函数
DROP FUNCTION IF EXISTS lib_mysqludf_sys_info; DROP FUNCTION IF EXISTS sys_get; DROP FUNCTION IF EXISTS sys_set; DROP FUNCTION IF EXISTS sys_exec; DROP FUNCTION IF EXISTS sys_eval; CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME ‘lib_mysqludf_sys.so’; CREATE FUNCTION sys_get RETURNS string SONAME ‘lib_mysqludf_sys.so’; CREATE FUNCTION sys_set RETURNS int SONAME ‘lib_mysqludf_sys.so’; CREATE FUNCTION sys_exec RETURNS int SONAME ‘lib_mysqludf_sys.so’; CREATE FUNCTION sys_eval RETURNS string SONAME ‘lib_mysqludf_sys.so’;
到此mysqludf就安装完了,只要在sql里使用函数sys_exec()就能调用系统程序了。
注意:在编译源码时,可能会出现如下错误
In file included from lib_mysqludf_sys.c:40:
/usr/include/mysql/my_global.h:626:25: error: my_compiler.h: No such file or directory
这是一个mysql的bug引起的错误,只要修改/usr/include/mysql/my_global.h文件,注释掉626行重新编译就可以了。
相关文章推荐
- mysqldump导出多个数据库
- mysqldump参数详细说明(转)
- mysql数据库---批处理与大文本/图片类型
- mysql 函数
- Mysql导入sql文件乱码问题
- mysql 多表关联更新
- MySql数据库编码
- mysql数据库导出.sql文件
- MySQL 基本语句记录
- MySQL备份原理详解
- MySQL的小指南
- jdbc连接mysql
- 学会用各种姿势备份MySQL数据库
- mysql单用户赋予多库权限
- txt导入到mySQL
- mysql自增主键在大量删除后如何重新设置避免断层
- mysql 删除语句
- Mysql学习总结(15)——Mysql错误码大全
- Mysql学习总结(15)——Mysql错误码大全
- Mysql学习总结(15)——Mysql错误码大全