MySQL UDF sys_exec

Posted

技术标签:

【中文标题】MySQL UDF sys_exec【英文标题】: 【发布时间】:2012-09-09 18:15:34 【问题描述】:

我正在使用 mysql UDF 函数sys_exec 在 MySQL 的触发器中调用 Java 程序。您能否提供有关如何将参数传递给 sys_exec 以便它调用 Java 程序的信息?

【问题讨论】:

【参考方案1】:

您可以使用此link to use sys_exec function。它说,

sys_exec sys_exec 接受一个命令字符串参数并执行它。 语法

sys_exec(arg1) 参数和返回值

arg1 : 对当前操作系统有效的命令字符串或 执行环境。返回一个(整数)退出代码 执行的过程。安装

将共享库二进制文件放在适当的位置。登录到 mysql 作为 root 或其他具有足够权限的用户,并且 选择任何数据库。然后,使用以下 DDL 创建函数 语句:CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so'; 该功能将在所有数据库中全局可用。卸载函数,运行以下语句:DROP FUNCTION sys_exec;

为了执行 Java 程序,您应该将 arg1 填写为 "java <absolute path to precompiled program to run>"

注意:java的路径应该事先配置好。

希望对你有帮助...

【讨论】:

shubhansh 我已经做了所有的事情,但无法纠正可以让 java 程序调用的参数。您能否提供有关 sys_exec 采用的参数字符串的信息。 您输入的参数是什么?你采取了哪些步骤?提供更多细节...... sys_exec('java /home/Desktop/helloWorld') 这是作为参数传递的。这里的 helloWorld 是一个未被 exec 函数调用的类。 你能通过终端执行上述命令吗? java的路径是在系统变量中设置的吗?您的 MySQL 是否有足够的权限来启动新进程。尝试以 root 身份运行 MySQL 服务器,然后检查。返回值是多少?

以上是关于MySQL UDF sys_exec的主要内容,如果未能解决你的问题,请参考以下文章

Mysql提权-基于Mysql的UDF提权(Windows系统)1

提权基础-----mysql-udf提权

删除 initid->ptr、MySQL 聚合函数 (UDF) 时失去与 MySQL 服务器的连接

Mysql udf插件自定义实现

UDF 并在 MySql 中运行它

Mysql提权-基于Mysql的UDF提权(Linux系统)