Dépannage du SELECT INTO OUTFILE Errcode 13 de MySQL : au-delà des autorisations de base
L'utilisation de SELECT INTO OUTFILE
pour exporter des données MySQL vers un CSV peut être contrecarrée par Errcode 13, une erreur d'autorisation. Bien que les autorisations de fichiers insuffisantes soient la cause habituelle, le problème persiste même avec des autorisations de répertoire correctes, souvent en raison des mesures de sécurité d'AppArmor dans les versions modernes d'Ubuntu Server.
Le rôle d'AppArmor dans les autorisations MySQL
AppArmor, un module de sécurité Linux, restreint l'accès des applications aux ressources système. Si MySQL s'exécute sous un profil AppArmor (vérifiez avec sudo aa-status
; recherchez "/usr/sbin/mysqld" sous "profils en mode appliqué"), son accès en écriture peut être limité.
Résoudre le problème : accorder l'accès à AppArmor
Pour permettre à MySQL d'écrire dans des emplacements spécifiques :
Modifiez le profil AppArmor : Ouvrez /etc/apparmor.d/usr.sbin.mysqld
pour le modifier.
Ajouter des autorisations en écriture : Ajoutez des lignes accordant un accès en lecture/écriture au répertoire cible. Par exemple :
<code>/usr/sbin/mysqld { ... /data/ r, /data/* rw, }</code>
Cela permet à MySQL de lire et d'écrire dans /data
et ses sous-répertoires.
Recharger AppArmor : Exécutez sudo /etc/init.d/apparmor reload
pour appliquer les modifications.
Redémarrez MySQL : Redémarrez le service MySQL. Réessayez votre commande SELECT INTO OUTFILE
.
Remarque de sécurité importante : Examinez attentivement les implications de l'octroi d'un accès en écriture à MySQL via AppArmor. N'accordez l'accès qu'aux répertoires absolument nécessaires pour minimiser les risques de sécurité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!