Maison >base de données >tutoriel mysql >Pourquoi MySQL SELECT INTO OUTFILE échoue-t-il avec Errcode 13 malgré les autorisations de fichier correctes ?

Pourquoi MySQL SELECT INTO OUTFILE échoue-t-il avec Errcode 13 malgré les autorisations de fichier correctes ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-24 15:07:13559parcourir

Why Does MySQL SELECT INTO OUTFILE Fail with Errcode 13 Despite Correct File Permissions?

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 :

  1. Modifiez le profil AppArmor : Ouvrez /etc/apparmor.d/usr.sbin.mysqld pour le modifier.

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

  1. Recharger AppArmor : Exécutez sudo /etc/init.d/apparmor reload pour appliquer les modifications.

  2. 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn