Fehlerbehebung bei MySQLs SELECT INTO OUTFILE-Fehlercode 13: Über grundlegende Berechtigungen hinaus
Die Verwendung von SELECT INTO OUTFILE
zum Exportieren von MySQL-Daten in eine CSV-Datei kann durch Errcode 13, einen Berechtigungsfehler, vereitelt werden. Während unzureichende Dateiberechtigungen die übliche Ursache sind, bleibt das Problem auch bei korrekten Verzeichnisberechtigungen bestehen, was häufig auf die Sicherheitsmaßnahmen von AppArmor in modernen Ubuntu-Serverversionen zurückzuführen ist.
Die Rolle von AppArmor bei MySQL-Berechtigungen
AppArmor, ein Linux-Sicherheitsmodul, beschränkt den Anwendungszugriff auf Systemressourcen. Wenn MySQL unter einem AppArmor-Profil ausgeführt wird (überprüfen Sie es mit sudo aa-status
; suchen Sie nach „/usr/sbin/mysqld“ unter „Profile im Erzwingungsmodus“), ist sein Schreibzugriff möglicherweise eingeschränkt.
Beheben des Problems: Gewähren des AppArmor-Zugriffs
So erlauben Sie MySQL, an bestimmte Speicherorte zu schreiben:
Bearbeiten Sie das AppArmor-Profil:Öffnen Sie /etc/apparmor.d/usr.sbin.mysqld
zur Bearbeitung.
Schreibberechtigungen hinzufügen:Zeilen hinzufügen, die Lese-/Schreibzugriff auf das Zielverzeichnis gewähren. Zum Beispiel:
<code>/usr/sbin/mysqld { ... /data/ r, /data/* rw, }</code>
Dadurch kann MySQL aus /data
und seinen Unterverzeichnissen lesen und schreiben.
AppArmor neu laden:Ausführen sudo /etc/init.d/apparmor reload
, um die Änderungen zu übernehmen.
MySQL neu starten: Starten Sie den MySQL-Dienst neu. Wiederholen Sie Ihren SELECT INTO OUTFILE
-Befehl.
Wichtiger Sicherheitshinweis: Berücksichtigen Sie sorgfältig die Auswirkungen der Gewährung von Schreibzugriff auf MySQL über AppArmor. Gewähren Sie nur Zugriff auf absolut notwendige Verzeichnisse, um Sicherheitsrisiken zu minimieren.
Das obige ist der detaillierte Inhalt vonWarum wählt MySQL in Outfile trotz korrekter Dateiberechtigungen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!