質問:
SELECT INTO OUTFILE を使用してテーブル データをサーバーのデフォルト ディレクトリ外の CSV ファイルにエクスポートしようとすると、アクセス許可と所有権を調整した後でもエラーコード 13 (アクセス許可エラー) が発生します。これは、Ubuntu システム、特に AppArmor を実行しているシステムで頻繁に発生します。
解決策:
1. AppArmor のステータスを確認します:
sudo aa-status
コマンドを実行して、mysqld が強制モードであるかどうかを確認します。リストに表示される場合は、AppArmor が書き込み操作をブロックしている可能性があります。
2. AppArmor 構成ファイルを編集します:
/etc/apparmor.d/usr.sbin.mysqld
ファイルを開き、ファイルの最後に目的のディレクトリ パスを追加し、読み取り/書き込み権限があることを確認します。例:
<code>/usr/sbin/mysqld { ... **/data/ r, /data/* rw,** }</code>
3. AppArmor 構成ファイルをリロードします:
sudo /etc/init.d/apparmor reload
コマンドを実行して変更を適用します。
4. クエリを再試行します:
AppArmor 構成ファイルをリロードした後、SELECT INTO OUTFILE クエリを再度試してください。これで、MySQL はターゲット ディレクトリに書き込むことができるようになります。
警告:
デフォルトの場所以外のディレクトリに MySQL 書き込み権限を付与すると、セキュリティに影響することに注意してください。機密データを保護するために適切な手段が講じられていることを確認してください。
以上がSELECT INTO OUTFILE で MySQL エラーコード 13 (権限エラー) を修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。