![授予数据库用户文件夹访问权限](https://linux22.com/image/520985/%E6%8E%88%E4%BA%88%E6%95%B0%E6%8D%AE%E5%BA%93%E7%94%A8%E6%88%B7%E6%96%87%E4%BB%B6%E5%A4%B9%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90.png)
我正在尝试使用以下查询从 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
首先你必须定义你的数据库是什么:
use database_name;
然后您就可以运行查询。
如果仍然不起作用,那是因为您创建了它们,但尚未为给定用户定义对它的访问权限。
GRANT ALL ON database_name.* TO 'someuser'@'somehost';
您可以在以下网址阅读有关 Grant 使用的更多信息http://dev.mysql.com/doc/refman/5.1/en/grant.html
答案2
#1045 - Access denied for user '[username]'@'localhost' (using password: YES)
该错误与文件或目录权限无关。这是 MySQL 告诉您,您使用的 MySQL 登录凭据对于该查询不正确。这可能是因为,正如 Prix 指出的那样,您没有指定要使用的数据库。
答案3
我花了几个小时试图理解这个页面和 StackOverflow 的许多其他页面上的建议。
无论我如何更改 MySql 中的权限,都无法使任何东西正常工作。
我恢复到了我开始时的权限。
最终对我有用的方法比其他人的建议更简单:
echo "select id, emailAddress FROM contacts" | mysql --user=myusername --password mydatabasename > /home/my_output_file.tsv