ฉันพยายามถ่ายโอนเนื้อหาของตารางไปยังไฟล์ csv โดยใช้คำสั่ง MySQL SELECT INTO OUTFILE ถ้าฉันทำ:
SELECT column1, column2
INTO OUTFILE 'outfile.csv'
FIELDS TERMINATED BY ','
FROM table_name;
outfile.csv จะถูกสร้างขึ้นบนเซิร์ฟเวอร์ในไดเร็กทอรีเดียวกันไฟล์ของฐานข้อมูลนี้ถูกเก็บไว้ใน.
อย่างไรก็ตามเมื่อฉันเปลี่ยนแบบสอบถามเป็น:
SELECT column1, column2
INTO OUTFILE '/data/outfile.csv'
FIELDS TERMINATED BY ','
FROM table_name;
ฉันเข้าใจ:
ERROR 1 (HY000): Can't create/write to file '/data/outfile.csv' (Errcode: 13)
Errcode 13 เป็นข้อผิดพลาดเกี่ยวกับสิทธิ์ แต่ฉันได้รับแม้ว่าฉันจะเปลี่ยนความเป็นเจ้าของ / data เป็น mysql: mysql และให้สิทธิ์ 777 MySQL ทำงานในฐานะผู้ใช้ "mysql"
น่าแปลกที่ฉันสามารถสร้างไฟล์ใน / tmp แต่ไม่ได้อยู่ในไดเร็กทอรีอื่น ๆ ที่ฉันได้ลองแม้ว่าจะมีการตั้งค่าสิทธิ์เช่นนั้นผู้ใช้ mysql ควรจะสามารถเขียนลงในไดเร็กทอรีได้
นี่คือ MySQL 5.0.75 ที่ทำงานบน Ubuntu
/tmp
.