sql >> Base de Datos >  >> RDS >> Mysql

Error de resultado de UDF

Gracias Rolando.

Entonces, la respuesta a mi pregunta es "AppArmor".

De Wikipedia:

AppArmor permite al administrador del sistema asociar con cada programa un perfil de seguridad que restringe las capacidades de ese programa. Complementa el modelo tradicional de control de acceso discrecional (DAC) de Unix proporcionando control de acceso obligatorio (MAC).

Dado que Ubuntu Hardy, el paquete del servidor MySQL 5.0 también contiene un archivo de perfil AppArmor (/etc/apparmor.d/usr.sbin.mysqld) que limita las funcionalidades del servidor MySQL, como llamar a una UDF para ejecutar comandos.

Entonces, para permitir que MySQL ejecute comandos de Linux, debo cambiar el nivel de seguridad de MySql dentro de AppArmor.

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

Para ver el estado de AppArmor:

 [[email protected] ~]# aa-status 

Con esta configuración, puedo ejecutar sys_eval y sys_exec. Pero eso todavía se limita al directorio mysql. Por lo tanto, no puedo crear un archivo ni ejecutar un script desde ningún directorio.

Entonces, la solución es agregar permisos a apparmor para que mysql acceda a los nuevos directorios de datos.

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

Añadir:

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

Reinicie los servidores:

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

Si eso aún no funciona, verifique los permisos nix para asegurarse de que mysql sea el propietario y el grupo para el nuevo directorio de forma recursiva.

chown -R mysql:mysql “new datadir path”

Espero que eso ayude a alguien.

Abid