mysql内から(プロシージャ、トリガー、またはmysqlのコマンドライン内から)シェルコマンドを実行しようとしています。
mysqlプラグインにlib_mysqludf_sysを追加し、ライブラリで使用できる関数を作成しました。(図書館)ホームページ
ライブラリには5つの機能があります。
- sys_set-$ PATHを設定します-これは機能し、後で確認できる$PATHを格納します。
- sys_get-$ PATHの保存された値を取得します-これも機能し、保存した値を返します。
- sys_exec-システムでコマンドを実行し、終了コードを返します。
- sys_eval-システムでコマンドを実行し、標準出力を返します。
- lib_mysqludf_sys_info-ライブラリの現在のバージョンを返します-これも機能します。
正しく機能するには、sys_execとsys_evalが必要です。
検索で問題を見つけたと思いますが、解決できません。
mysqlはapparmorによって制限されており、デフォルトのapparmorプロファイルによってシステムコマンドを実行するためのアクセスが許可されていません。ドキュメントのコマンドを試して、単一のプロファイルを無効にし、フレームワークを無効にし、1つを除くすべてのプロファイルを強制モードにし、すべてのプロファイルを不平モードにしました。何も機能しません。コマンド
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トリガーを介して)システムコマンドを実行できるようにするためです。これを簡単に実装できる他の方法について提案がある場合は、それらについても言及してください。
ありがとう。