授予数据库用户文件夹访问权限

4

我正在尝试使用以下查询语句从MySQL中创建CSV数据导出:

SELECT * INTO OUTFILE '/tmp/result.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM getfreepellets WHERE 1

我遇到了以下错误:

#1045 - Access denied for user '[username]'@'localhost' (using password: YES)

(用户名已删除,但是是正确的)

我应该如何授权此用户在服务器上创建文件?

编辑:

我将第一行改为我的确切主目录,并收到了相同的错误。

1个回答

6

您可能想要授予用户文件权限:

文件权限允许您使用LOAD DATA INFILESELECT ... INTO OUTFILE语句以及LOAD_FILE()函数在服务器主机上读写文件。

拥有文件权限的用户可以读取服务器主机上任何全球可读或MySQL服务器可读的文件。(这意味着用户可以读取任何数据库目录中的文件,因为服务器可以访问这些文件。)文件权限还使用户能够在MySQL服务器具有写入访问权限的任何目录中创建新文件。作为安全措施,服务器不会覆盖现有文件。

要授予文件权限,请以root身份登录并执行以下操作:

GRANT FILE ON *.* TO 'your_user'@'localhost';

我现在正在与我的主机技术支持进行实时聊天。我已经将你的答案链接给他们了。正在等待中... - hookedonwinter
显然,BlueHost无法在共享服务器上授予此特权。供参考。但是,我会假设您是正确的,并标记此答案为已接受。现在是创建PHP导出的时间。 - hookedonwinter
hookedonwinter:感谢您的接受。稍后我会进行测试,以确保当用户没有文件权限时确实返回错误1045。 - Daniel Vassallo
@hookedonwinter:刚试了一下,事实上,如果一个用户没有FILE权限,他将收到#1045错误。因此,如果主机允许的话,这将解决问题。 - Daniel Vassallo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接