4

我正在从 mysql UDF 函数 sys_exec 调用 shell 脚本:

 SET cmd = CONCAT('cd /home/enablement;sh execute.sh ', CONCAT('1', ' ', '1', ' ', '1'));
SET result = sys_exec(cmd);
SELECT result FROM DUAL; 

但是我得到一个错误代码 32512 结果可能是两个不同的用户,一个用于 mysql,另一个用于 linux(用于 execute.sh 脚本),请您指导我如何让 mysql 用户访问在调用 sys_exec 函数时执行.sh 文件。

感谢进阶

4

2 回答 2

3

我知道这篇文章很旧,但也许它会对某人有所帮助
你应该这样做,
$ sudo /etc/init.d/apparmor stop
因为 AppArmor 限制了你的 UDF 函数的执行。

于 2014-04-21T13:58:39.463 回答
0

请不要完全停止 apparmor,只需在 apparmor 的 mysqld 配置文件中启用您的用例即可。例如我需要在 mysql 中使用 redis。

$ sudo vim /etc/apparmor.d/usr.sbin.mysqld

然后在最后插入这一行

/usr/bin/redis-cli mr,

保存文件并重新加载 apparmor

sudo service apparmor reload
于 2017-12-12T06:02:38.133 回答