从MySQL执行系统命令(Executing a system command from mysql

2019-09-27 07:07发布

我试图从MySQL内执行一个外壳命令(从一个过程或触发器或MySQL的命令行内)。

我已经加入lib_mysqludf_sys到MySQL插件和创建可与磁带库的功能。 (库) 的主页

图书馆有5种功能。

  1. sys_set - 设置$ PATH - 这个工程并存储$ PATH,我可以稍后再检查。
  2. sys_get - 获得$ PATH中存储的值 - 这也适用,并返回我已存储的值。
  3. sys_exec - 在系统执行命令,并返回退出代码。
  4. sys_eval - 在系统中执行一个命令,并返回标准输出。
  5. lib_mysqludf_sys_info - 返回库的当前版本 - 这也适用。

我需要sys_exec和sys_eval才能正常工作。

我想我已经找到了我的搜索问题,但解决不了。

MySQL是受限制的AppArmor ,不授予访问权限由默认AppArmor配置文件来执行系统命令。 我曾尝试在文档中的命令来禁用一个配置文件,禁用框架,将所有的配置文件,除了一个进入强制模式,并把所有的配置文件提示模式。 没有什么作品。 命令

sudo apparmor_status

总是给我相同的输出。

20 profiles are loaded.
20 profiles are in enforce mode.
  /opt/extras.ubuntu.com/unity-lens-askubuntu/unity-askubuntu-daemon
  /sbin/dhclient
  /usr/bin/evince
  /usr/bin/evince-previewer
  /usr/bin/evince-previewer//launchpad_integration
  /usr/bin/evince-previewer//sanitized_helper
  /usr/bin/evince-thumbnailer
  /usr/bin/evince-thumbnailer//sanitized_helper
  /usr/bin/evince//launchpad_integration
  /usr/bin/evince//sanitized_helper
  /usr/lib/NetworkManager/nm-dhcp-client.action
  /usr/lib/connman/scripts/dhclient-script
  /usr/lib/cups/backend/cups-pdf
  /usr/lib/lightdm/lightdm/lightdm-guest-session-wrapper
  /usr/lib/telepathy/mission-control-5
  /usr/lib/telepathy/telepathy-*
  /usr/sbin/cupsd
  /usr/sbin/mysqld
  /usr/sbin/tcpdump
  /usr/share/gdm/guest-session/Xsession
0 profiles are in complain mode. 
5 processes have profiles defined. 
5 processes are in enforce mode.    
  /sbin/dhclient (2537)     
  /usr/lib/telepathy/mission-control-5 (2709)  
  /usr/sbin/cupsd (12245)     
  /usr/sbin/cupsd (12250)     
  /usr/sbin/mysqld (12675)  
0 processes are in complain mode. 
0 processes are unconfined but have a profile defined.

请告诉我,我怎么可能禁用的AppArmor或更改配置文件为MySQL,以便它可以访问执行系统命令。

我做这一切的原因是,当出头的DB发生(通过DB触发器)我可以执行系统命令,如果你有在此可以很容易地实现,那么请注明那些过于一些其他方式的建议。

谢谢。

Answer 1:

设法得到这个工作。 先放的AppArmor在抱怨模式必需的配置文件,然后用AppArmor中的互动工具(AA-genprof / AA-logprof)来配置mysqld的配置文件



文章来源: Executing a system command from mysql