我正在从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函数时访问execute.sh文件。
感谢Adv
答案 0 :(得分:3)
我知道这篇文章很老但也许会有所帮助
你应该做这个
$ sudo /etc/init.d/apparmor stop
因为AppArmor限制了UDF功能的执行。
答案 1 :(得分:0)
请不要完全停止apparmor,只需在apparmor的mysqld配置文件中启用您的用例。例如,我需要在mysql中使用redis。
$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
然后在末尾插入此行
/usr/bin/redis-cli mr,
保存文件并重新加载apparmor
sudo service apparmor reload