Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Tidak Boleh Mengakses Fail Saya Apabila Menggunakan LOAD DATA INFILE?

Mengapa MySQL Tidak Boleh Mengakses Fail Saya Apabila Menggunakan LOAD DATA INFILE?

Linda Hamilton
Lepaskan: 2024-11-03 20:21:02
asal
673 orang telah melayarinya

Why Can't MySQL Access My File When Using LOAD DATA INFILE?

MUAT DATA INFILE Kod Ralat : 13

Apabila cuba memuatkan data ke dalam jadual MySQL menggunakan arahan LOAD DATA INFILE pada pelayan jauh , anda mungkin menghadapi Kod Ralat : 13: "Tidak boleh mendapatkan stat '/httpdocs/.../.../testFile.csv' (Errcode: 2)". Ini menunjukkan bahawa MySQL tidak dapat mengakses fail yang ditentukan.

Langkah berikut boleh membantu menyelesaikan isu ini:

1. Berikan Keistimewaan yang Mencukupi

Pastikan bahawa pengguna pangkalan data mempunyai keistimewaan yang mencukupi untuk mengakses fail. Pertimbangkan untuk memberikan kebenaran SELECT, FILE dan LOAD DATA kepada pengguna:

GRANT SELECT, FILE, LOAD DATA ON *.* TO 'userName'@'%'
Salin selepas log masuk

2. Tetapkan Kebenaran Fail dan Folder

Pastikan kebenaran fail dan folder membenarkan MySQL membaca fail. Tetapkan kebenaran fail kepada 644 (rw-r--r--) dan kebenaran folder kepada 755 (rwxr-xr-x):

<code class="bash">chmod 644 /httpdocs/.../.../testFile.csv
chmod 755 /httpdocs/.../.../</code>
Salin selepas log masuk

3. Semak Tetapan Apparmor

Pada sistem Ubuntu, Apparmor boleh menyekat akses MySQL kepada fail. Untuk membenarkan MySQL membaca fail daripada direktori "tmp", tambahkan baris berikut pada /etc/apparmor.d/usr.sbin.mysqld:

/tmp/** rwk
Salin selepas log masuk

Muat Semula Apparmor menggunakan:

<code class="bash">sudo /etc/init.d/apparmor reload</code>
Salin selepas log masuk

4. Lumpuhkan SELinux

Jika menggunakan SELinux (Security-Enhanced Linux), ia juga boleh menyekat akses fail. Cuba lumpuhkannya buat sementara waktu dan jalankan semula arahan LOAD DATA INFILE. Rujuk dokumentasi SELinux anda untuk mendapatkan arahan khusus.

Nota Tambahan:

  • Pastikan bahawa laluan fail yang dinyatakan dalam pernyataan LOAD DATA INFILE adalah betul dan boleh diakses oleh MySQL .
  • Pertimbangkan menggunakan alat import data seperti mysqlimport atau mysql.connector untuk mengimport data sebaliknya.

Atas ialah kandungan terperinci Mengapa MySQL Tidak Boleh Mengakses Fail Saya Apabila Menggunakan LOAD DATA INFILE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan