ฉันพยายามที่จะส่งออกข้อมูลจากตาราง MySQL ไปยังไฟล์ แต่ได้รับข้อผิดพลาดในการอนุญาต:
$ pwd
/home/dotancohen
$ mkdir in
$ chmod 777 in/
$ mysql -ugs -p
mysql> USE someDatabase;
mysql> SELECT * FROM data INTO OUTFILE '/home/dotancohen/in/data.csv';
ERROR 1045 (28000): Access denied for user 'gs'@'localhost' (using password: YES)
mysql>
หากไดเรกทอรีที่เป็นปัญหาถูก chmodded ไปที่ 777 แล้วทำไมผู้ใช้ MySQL ไม่สามารถเขียนไฟล์ได้? น่าสนใจพอฉันไม่สามารถเขียนถึง / tmp / อย่างใดอย่างหนึ่ง
แก้ไข: ดูเหมือนว่าผู้ใช้ DB มีสิทธิ์ MySQL ที่เหมาะสม:
mysql> show grants;
+----------------------------------------------------------------------------------+
| Grants for gs@localhost |
+----------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'gs'@'localhost' IDENTIFIED BY PASSWORD 'somePassword' |
| GRANT ALL PRIVILEGES ON `gs\_%`.* TO 'gs'@'localhost' |
+----------------------------------------------------------------------------------+
2 rows in set (0.01 sec)
SELECT
สิทธิ์ ฉันมักจะเรียกดูฐานข้อมูลในฐานะผู้ใช้รายนี้
FILE
สิทธิ์ตามที่อธิบายเอกสาร MySQL
in
จะไม่มีจุดหมายหาก MySQL ไม่สามารถเข้าถึงdotanchoen
ได้ กล่าวอีกนัยหนึ่งกล่องเงินฝากความปลอดภัยในตู้นิรภัยของธนาคารสามารถเปิดทิ้งไว้ได้กว้าง แต่ถ้าประตูตู้นิรภัยของธนาคารถูกล็อคคุณจะไม่ได้เข้าไปในกล่องgs
ผู้ใช้ของคุณต้องมีFILE
สิทธิ์mysql ในการเรียกใช้คิวรีนั้น