MySQL Error 1290: Secure File Private Option Blocking Data Export
Apabila melaksanakan pernyataan MySQL yang melibatkan eksport data ke fail menggunakan INTO OUTFILE klausa, pengguna mungkin menghadapi ralat "Kod Ralat: 1290. Pelayan MySQL sedang berjalan dengan pilihan --secure-file-priv jadi ia tidak dapat melaksanakan pernyataan ini." Ini berlaku apabila pelayan dikonfigurasikan dengan langkah keselamatan yang dipertingkatkan yang menyekat operasi fail.
Penjelasan Pilihan Peribadi Fail Selamat
Had pilihan --secure-file-priv akses fail dan keistimewaan dalam pelayan MySQL. Secara lalai, pilihan ini didayakan dan menetapkan direktori khusus sebagai satu-satunya lokasi yang dibenarkan untuk operasi fail. Sebarang percubaan untuk mengakses atau menulis ke fail di luar direktori yang ditetapkan ini akan mengakibatkan Ralat 1290.
Penyelesaian Mudah: Hadkan Laluan ke Direktori yang Dibenarkan
Untuk menyelesaikan ralat ini tanpa mengubah suai tetapan pelayan, pengguna boleh menyatakan secara eksplisit direktori yang dibenarkan dalam klausa INTO OUTFILE:
SELECT * FROM xxxx WHERE XXX INTO OUTFILE '<path/to/permitted/directory>/report.csv' FIELDS TERMINATED BY '#' ENCLOSED BY '"' LINES TERMINATED BY '\n'
Ganti
Penyelesaian Alternatif:
Ini memerlukan pengeditan fail konfigurasi MySQL (biasanya my.ini atau my.cnf). Komen keluar atau alih keluar pilihan secure_file_priv atau tetapkannya kepada rentetan kosong (``). Walau bagaimanapun, ini mengurangkan keselamatan pelayan dan hanya perlu dilakukan dalam persekitaran terkawal.
Jika anda memerlukan akses fail di luar direktori yang dibenarkan, anda boleh memberikan keistimewaan FILE kepada pengguna pelaksana. Ini boleh dilakukan menggunakan pernyataan SQL berikut:
GRANT FILE ON *.* TO <username>@'<host>';
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat MySQL 1290: \'Pelayan MySQL sedang berjalan dengan pilihan --secure-file-priv jadi ia tidak dapat melaksanakan pernyataan ini\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!