sql >> データベース >  >> RDS >> Mysql

UDF結果エラー

    ローランドに感謝します。

    だから、私の質問に対する答えは「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”
    

    それが誰かの助けになることを願っています。

    従う



    1. MYSQL:文字列を月に変換する方法(数値)

    2. MySQLのベストプラクティスの質問:IDまたは日付で並べ替えますか?

    3. PythonによるMySQLのAES_DECRYPT()の実装の使用方法

    4. MySQLは2人のユーザー間の会話を取得します