2012-07-07 172 views
1

我試圖從mysql內執行一個shell命令(從一個過程或觸發器或mysql的命令行中)。從mysql執行系統命令

我已經將lib_mysqludf_sys添加到mysql插件並創建了該庫可用的函數。 (圖書館)home page

該庫有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的配置文件,以便它可以訪問執行系統命令。

我這樣做的原因是,我可以在數據庫中發生某些事情(通過數據庫觸發器)時執行系統命令,如果您有其他方式可以輕鬆實現的其他方式的建議,請也提到這些。

謝謝。

回答

2

設法得到這個工作。首先將apparmor放入抱怨模式以獲取必要的配置文件,然後使用apparmor的交互式工具(aa-genprof/aa-logprof)來配置mysqld的配置文件