将查询结果打印到文本文件时,MySQL访问被拒绝

时间:2012-09-07 18:20:47

标签: mysql select permissions

我正在尝试从MySQL(SELECT blah INTO OUTFILE 'filename')打印查询结果到文件,但是我收到以下错误消息:

ERROR 1045 (28000): Access denied for user 'mysql_username'@'localhost' (using password: YES)

当我只选择屏幕上的信息时,它工作正常;它正在添加INTO OUTFILE部分,这使它给我错误。

起初我认为我只是没有这个命令的权限(我在mySQL中对这个特定的数据库有完全的创建/删除权限,但在服务器上没有root访问权限),但是查看错误我发现有迹象表明用户名&密码未正确传递到服务器。我是从服务器上的MySQL控制台运行的,所以我不认为会是这种情况,但MySQL用户名与服务器登录名不同,可能是问题吗?

这是我自己可以照顾的事情,还是我需要将链条踢给拥有更多权利的人(在MySQL和/或服务器上)?

背景:我需要清除表中1000个条目中的1/4,以及与每个条目关联的文件。不幸的是,所有文件都在同一个文件夹中,并使用哈希作为文件名,所以虽然我可以轻松地从表中使用范围获取我想要的行,但这对文件不起作用。我想在清除不需要的行之前从表中获取文件名,以便我可以使用shell脚本删除相关文件。

2 个答案:

答案 0 :(得分:1)

您的用户帐户需要FILE权限。

答案 1 :(得分:1)

根据manual,您必须拥有FILE权限并可以访问服务器主机。

  

SELECT ... INTO OUTFILE的{​​{1}}'file_name'格式将所选行写入文件。该文件是在服务器主机上创建的,因此您必须具有SELECT权限才能使用此语法