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

Como posso contornar o MySQL Errcode 13 com SELECT INTO OUTFILE?


Qual versão específica do Ubuntu é esta e esta é o Ubuntu Server Edition?

As edições recentes do Ubuntu Server (como 10.04) são fornecidas com o AppArmor e o perfil do MySQL pode estar no modo de imposição por padrão. Você pode verificar isso executando sudo aa-status igual a:
# sudo aa-status
5 profiles are loaded.
5 profiles are in enforce mode.
   /usr/lib/connman/scripts/dhclient-script
   /sbin/dhclient3
   /usr/sbin/tcpdump
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/sbin/mysqld
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode :
   /usr/sbin/mysqld (1089)
0 processes are in complain mode.

Se o mysqld estiver incluído no modo de imposição, então provavelmente é aquele que está negando a gravação. As entradas também seriam escritas em /var/log/messages quando o AppArmor bloqueia as gravações/acessos. O que você pode fazer é editar /etc/apparmor.d/usr.sbin.mysqld e adicione /data/ e /data/* perto do fundo assim:
...  
/usr/sbin/mysqld  {  
    ...  
    /var/log/mysql/ r,  
    /var/log/mysql/* rw,  
    /var/run/mysqld/mysqld.pid w,  
    /var/run/mysqld/mysqld.sock w,  
    **/data/ r,  
    /data/* rw,**  
}

E então faça o AppArmor recarregar os perfis.
# sudo /etc/init.d/apparmor reload

AVISO:a alteração acima permitirá que o MySQL leia e grave no diretório /data. Esperamos que você já tenha considerado as implicações de segurança disso.