Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je contourner MySQL Errcode 13 avec SELECT INTO OUTFILE?

De quelle version particulière d'Ubuntu s'agit-il et s'agit-il d'Ubuntu Server Edition ?

Les éditions récentes d'Ubuntu Server (telles que 10.04) livrées avec AppArmor et le profil de MySQL peuvent être en mode d'application par défaut. Vous pouvez vérifier cela en exécutant sudo aa-status comme ç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.

Si mysqld est inclus dans le mode d'application, alors c'est probablement celui qui refuse l'écriture. Les entrées seraient également écrites dans /var/log/messages lorsque AppArmor bloque les écritures/accès. Ce que vous pouvez faire est de modifier /etc/apparmor.d/usr.sbin.mysqld et ajoutez /data/ et /data/* vers le bas comme ceci :

...  
/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,**  
}

Et ensuite, faites en sorte qu'AppArmor recharge les profils.

# sudo /etc/init.d/apparmor reload

ATTENTION :la modification ci-dessus permettra à MySQL de lire et d'écrire dans le répertoire /data. Nous espérons que vous avez déjà pris en compte les implications de sécurité de cela.