我正在尝试使用 MySQL SELECT INTO OUTFILE 语句将表的内容转储到 csv 文件。如果我做:
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 应该能够写入该目录。
这是在 Ubuntu 上运行的 MySQL 5.0.75。