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

Come posso aggirare MySQL Errcode 13 con SELECT INTO OUTFILE?

Quale versione particolare di Ubuntu è questa ed è questa Ubuntu Server Edition?

Le recenti edizioni di Ubuntu Server (come 10.04) vengono fornite con AppArmor e il profilo di MySQL potrebbe essere in modalità di applicazione per impostazione predefinita. Puoi verificarlo eseguendo sudo aa-status così:

# 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 mysqld è incluso in modalità force, probabilmente è quello che nega la scrittura. Le voci sarebbero anche scritte in /var/log/messages quando AppArmor blocca le scritture/gli accessi. Quello che puoi fare è modificare /etc/apparmor.d/usr.sbin.mysqld e aggiungi /data/ e /data/* vicino al fondo in questo modo:

...  
/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 poi fai in modo che AppArmor ricarichi i profili.

# sudo /etc/init.d/apparmor reload

ATTENZIONE:la modifica sopra consentirà a MySQL di leggere e scrivere nella directory /data. Ci auguriamo che tu abbia già considerato le implicazioni sulla sicurezza di questo.