Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich MySQL Errcode 13 mit SELECT INTO OUTFILE umgehen?

Welche spezielle Version von Ubuntu ist das und ist das Ubuntu Server Edition?

Neuere Ubuntu Server Editionen (z. B. 10.04) werden mit AppArmor ausgeliefert, und das Profil von MySQL befindet sich möglicherweise standardmäßig im Erzwingungsmodus. Sie können dies überprüfen, indem Sie sudo aa-status ausführen etwa so:

# 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.

Wenn mysqld im Erzwingungsmodus enthalten ist, dann ist es derjenige, der wahrscheinlich den Schreibvorgang verweigert. Einträge würden auch in /var/log/messages geschrieben werden wenn AppArmor die Schreibvorgänge/Zugriffe blockiert. Was Sie tun können, ist /etc/apparmor.d/usr.sbin.mysqld zu bearbeiten und fügen Sie /data/ hinzu und /data/* in der Nähe des unteren Randes wie folgt:

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

Und dann lassen Sie AppArmor die Profile neu laden.

# sudo /etc/init.d/apparmor reload

WARNUNG:Die obige Änderung erlaubt MySQL, das /data-Verzeichnis zu lesen und zu schreiben. Wir hoffen, dass Sie die Auswirkungen auf die Sicherheit bereits berücksichtigt haben.