从mysql执行系统命令

从mysql执行系统命令,mysql,linux,user-defined-functions,ubuntu-12.04,Mysql,Linux,User Defined Functions,Ubuntu 12.04,我试图在mysql中执行shell命令(在mysql的过程、触发器或命令行中) 我已经将lib_mysqludf_sys添加到mysql插件中,并创建了该库可用的函数。(图书馆) 图书馆有5项功能 sys_set-设置$PATH-这可以工作并存储$PATH,我可以稍后检查 sys_get-获取$PATH的存储值-这也起作用并返回我存储的值 sys_exec-在系统中执行命令并返回退出代码 sys_eval-在系统中执行命令并返回标准输出 lib_mysqludf_sys_info-返回库的当前版

我试图在mysql中执行shell命令(在mysql的过程、触发器或命令行中)

我已经将lib_mysqludf_sys添加到mysql插件中,并创建了该库可用的函数。(图书馆)

图书馆有5项功能

  • sys_set-设置$PATH-这可以工作并存储$PATH,我可以稍后检查
  • sys_get-获取$PATH的存储值-这也起作用并返回我存储的值
  • sys_exec-在系统中执行命令并返回退出代码
  • sys_eval-在系统中执行命令并返回标准输出
  • lib_mysqludf_sys_info-返回库的当前版本-这同样有效 我需要sys_exec和sys_eval正常工作

    我想我在搜索中发现了问题,但无法解决它

    mysql受到默认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触发器),我可以执行一个系统命令,如果您有一些其他方法的建议,可以很容易地实现,那么也请提及这些方法


    谢谢

    成功地使它工作起来。首先将apparmor置于投诉模式以获取必要的配置文件,然后使用apparmor的交互式工具(aa genprof/aa logprof)为mysqld配置配置文件