ローランドに感謝します。
だから、私の質問に対する答えは「AppArmor」です。
ウィキペディアから:
AppArmorを使用すると、システム管理者は各プログラムに、そのプログラムの機能を制限するセキュリティプロファイルを関連付けることができます。強制アクセス制御(MAC)を提供することにより、従来のUnix随意アクセス制御(DAC)モデルを補完します。
Ubuntu Hardy以降、MySQL 5.0サーバーパッケージにはAppArmorプロファイルファイル(/etc/apparmor.d/usr.sbin.mysqld)も含まれており、UDFを呼び出してコマンドを実行するなどのMySQLサーバーの機能を制限します。
したがって、MySQLにLinuxコマンドを実行させるには、AppArmor内のMySqlのセキュリティレベルを変更する必要があります。
[[email protected] ~]# aa-complain /usr/sbin/mysqld
AppArmorのステータスを確認するには:
[[email protected] ~]# aa-status
この構成を使用して、sys_evalとsys_execを実行できます。しかし、それでもmysqlディレクトリに限定されています。そのため、どのディレクトリからでもファイルを作成したり、スクリプトを実行したりすることはできません。
したがって、解決策は、mysqlが新しいデータディレクトリにアクセスするためのapparmorへのアクセス許可を追加することです。
sudo vi /etc/apparmor.d/usr.sbin.mysqld
追加:
/newdir/ r,
/newdir/** rwk,
サーバーを再起動します:
sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart
それでも機能しない場合は、nix権限をチェックして、mysqlが新しいディレクトリの所有者およびグループであることを再帰的に確認してください。
chown -R mysql:mysql “new datadir path”
それが誰かの助けになることを願っています。
従う