Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur de résultat UDF

Merci Roland.

Donc, la réponse à ma question est "AppArmor".

De Wikipédia :

AppArmor permet à l'administrateur système d'associer à chaque programme un profil de sécurité qui limite les capacités de ce programme. Il complète le modèle traditionnel de contrôle d'accès discrétionnaire (DAC) d'Unix en fournissant un contrôle d'accès obligatoire (MAC).

Depuis Ubuntu Hardy, le package serveur MySQL 5.0 contient également un fichier de profil AppArmor (/etc/apparmor.d/usr.sbin.mysqld) qui limite les fonctionnalités du serveur MySQL, comme l'appel d'un UDF pour exécuter des commandes.

Donc, pour laisser MySQL exécuter des commandes Linux, je dois changer le niveau de sécurité pour MySql dans AppArmor.

[[email protected] ~]# aa-complain /usr/sbin/mysqld 

Pour consulter l'état d'AppArmor :

 [[email protected] ~]# aa-status 

Avec cette configuration, je peux exécuter sys_eval et sys_exec. Mais cela reste limité au répertoire mysql. Je ne peux donc pas créer de fichier ni exécuter de script à partir de n'importe quel répertoire.

La solution consiste donc à ajouter des autorisations à apparmor pour que mysql accède aux nouveaux répertoires de données.

sudo vi /etc/apparmor.d/usr.sbin.mysqld

Ajouter :

/newdir/ r,
/newdir/** rwk,

Redémarrez les serveurs :

sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart

Si cela ne fonctionne toujours pas, vérifiez les autorisations nix pour vous assurer que mysql est propriétaire et groupe pour le nouveau répertoire de manière récursive.

chown -R mysql:mysql “new datadir path”

J'espère que cela aidera quelqu'un.

Accepter