Mysql
 sql >> Database >  >> RDS >> Mysql

Errore risultato UDF

Grazie Roland.

Quindi, la risposta alla mia domanda è "AppArmor".

Da Wikipedia:

AppArmor consente all'amministratore di sistema di associare a ciascun programma un profilo di sicurezza che limita le capacità di quel programma. Integra il tradizionale modello di controllo dell'accesso discrezionale (DAC) di Unix fornendo il controllo dell'accesso obbligatorio (MAC).

Da Ubuntu Hardy il pacchetto del server MySQL 5.0 contiene anche un file di profilo AppArmor (/etc/apparmor.d/usr.sbin.mysqld) che limita le funzionalità del server MySQL, come chiamare un UDF per eseguire comandi.

Quindi, per consentire a MySQL di eseguire comandi Linux, dovrei cambiare il livello di sicurezza per MySql all'interno di AppArmor.

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

Per dare un'occhiata allo stato di AppArmor:

 [[email protected] ~]# aa-status 

Con questa configurazione, posso eseguire sys_eval e sys_exec. Ma questo è ancora limitato alla directory mysql. Quindi non posso creare file o eseguire uno script da nessuna directory.

Quindi la soluzione è aggiungere i permessi ad apparmor affinché mysql acceda alle nuove directory di dati.

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

Aggiungi:

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

Riavvia i server:

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

Se ancora non funziona, controlla le autorizzazioni nix per assicurarti che mysql sia proprietario e gruppo per la nuova directory in modo ricorsivo.

chown -R mysql:mysql “new datadir path”

Spero che questo aiuti qualcuno.

Rispettare