ホームページ >データベース >mysql チュートリアル >ファイル権限が正しいにもかかわらず、MySQL SELECT INTO OUTFILE が Errcode 13 で失敗するのはなぜですか?

ファイル権限が正しいにもかかわらず、MySQL SELECT INTO OUTFILE が Errcode 13 で失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-24 15:07:13628ブラウズ

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

MySQL の SELECT INTO OUTFILE エラーコード 13 のトラブルシューティング: 基本権限を超えた

SELECT INTO OUTFILE を使用して MySQL データを CSV にエクスポートすると、権限エラーである Errcode 13 によって阻止される可能性があります。通常の原因はファイルのアクセス許可が不十分であることですが、ディレクトリのアクセス許可が正しくても問題は解決しません。多くの場合、最新の Ubuntu Server バージョンにおける AppArmor のセキュリティ対策が原因です。

MySQL 権限における AppArmor の役割

Linux セキュリティ モジュールである AppArmor は、アプリケーションのシステム リソースへのアクセスを制限します。 MySQL が AppArmor プロファイルで実行されている場合 (sudo aa-status で確認します。「強制モードのプロファイル」の下で「/usr/sbin/mysqld」を探します)、書き込みアクセスが制限されている可能性があります。

問題の解決: AppArmor へのアクセスの許可

MySQL が特定の場所に書き込めるようにするには:

  1. AppArmor プロファイルを編集します: 編集のために /etc/apparmor.d/usr.sbin.mysqld を開きます。

  2. 書き込み権限の追加: ターゲット ディレクトリへの読み取り/書き込みアクセスを許可する行を追加します。例:

<code>/usr/sbin/mysqld {
    ...
    /data/ r,
    /data/* rw,
}</code>

これにより、MySQL は /data とそのサブディレクトリに対して読み書きできるようになります。

  1. AppArmor のリロード: sudo /etc/init.d/apparmor reload を実行して変更を適用します。

  2. MySQL を再起動します: MySQL サービスを再起動します。 SELECT INTO OUTFILE コマンドを再試行してください。

重要なセキュリティ上の注意: AppArmor 経由で MySQL への書き込みアクセスを許可する場合の影響を慎重に検討してください。 セキュリティ リスクを最小限に抑えるために、絶対に必要なディレクトリへのアクセスのみを許可します。

以上がファイル権限が正しいにもかかわらず、MySQL SELECT INTO OUTFILE が Errcode 13 で失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。