当我运行以下查询时:
SELECT * FROM selecteddb.mytable
where time between "2018-08-06 00:00:00" and "2018-08-13 00:00:00"
INTO outfile "~/stats.csv"
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n';
我得到以下错误:
Error Code: 1045. Access denied for user 'admin'@'%' (using password: YES)
但是当我运行查询时 outfile
它运行得很好。
我使用mysql工作台和mac来运行查询。
1条答案
按热度按时间7qhs6swi1#
它看起来像你的
admin
用户没有文件权限。你可以授予许可,它就会工作。选择。。。select的“文件名”形式将所选行写入文件。文件是在服务器主机上创建的,因此您必须具有文件权限才能使用此语法。文件名不能是现有文件,这样可以防止/etc/passwd和数据库表等文件被破坏。character \u set \u filesystem系统变量控制文件名的解释。
https://dev.mysql.com/doc/refman/8.0/en/select-into.html
还要注意,mysql服务器需要对您提供的路径具有写权限。
file特权还允许用户在mysql服务器具有写访问权限的任何目录中创建新文件。这包括服务器的数据目录,其中包含实现特权表的文件。
如果您将查询执行为:
这将尝试在主目录中创建文件。如果省略路径而只保留文件名,则将在mysql的数据目录中创建该文件(
/var/lib/mysql
在我的ubuntu机器上)。因此,这应该工作没有任何问题。
希望有帮助!!