Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro de resultado UDF


Obrigado Rolando.

Então, a resposta para minha pergunta é "AppArmor".

Da Wikipédia:

O AppArmor permite que o administrador do sistema associe a cada programa um perfil de segurança que restringe os recursos desse programa. Ele complementa o modelo tradicional de controle de acesso discricionário (DAC) do Unix, fornecendo controle de acesso obrigatório (MAC).

Desde Ubuntu Hardy o pacote do servidor MySQL 5.0 contém também um arquivo de perfil AppArmor (/etc/apparmor.d/usr.sbin.mysqld) que limita as funcionalidades do servidor MySQL, como chamar um UDF para executar comandos.

Portanto, para permitir que o MySQL execute comandos do Linux, devo alterar o nível de segurança do MySql dentro do AppArmor.
[[email protected] ~]# aa-complain /usr/sbin/mysqld 

Para dar uma olhada no status do AppArmor:
 [[email protected] ~]# aa-status 

Com esta configuração, posso executar sys_eval e sys_exec. Mas isso ainda está limitado ao diretório mysql. Portanto, não consigo criar arquivo ou executar um script de qualquer diretório.

Então a solução é adicionar permissões ao apparmor para que o mysql acesse os novos diretórios de dados.
sudo vi /etc/apparmor.d/usr.sbin.mysqld

Adicionar:
/newdir/ r,
/newdir/** rwk,

Reinicie os servidores:
sudo /etc/init.d/apparmor restart
sudo /etc/init.d/mysql restart

Se isso ainda não funcionar, verifique as permissões nix para ter certeza de que o mysql é o proprietário e o grupo do novo diretório recursivamente.
chown -R mysql:mysql “new datadir path”

Espero que ajude alguém.

Uma aposta