当前位置:  开发笔记 > 后端 > 正文

查询输出到文件会给出拒绝访问错误

如何解决《查询输出到文件会给出拒绝访问错误》经验,为你挑选了1个好方法。

我试图使用以下查询捕获MySQL中的SQL查询的输出到文本文件.

select count(predicate),subject from TableA group by subject into outfile '~/XYZ/output.txt';

我收到以下错误.

ERROR 1045(28000):用户'用户名'@'%'的访问被拒绝(使用密码:是)

任何想法,我哪里错了?是一些与许可相关的问题吗?



1> Fire Crow..:

Outfile是mysql自己的权限.

如果你有所有它包括在内.

但是如果你只有一个安全的集合,如SELECT,INSERT,UPDATE,DELETE,DROP,CREATE,而不是OUTFILE,"into outfile"将无法在查询中使用.

这样做的原因是从MySQL内部访问文件,即使是出于写入目的,也存在一定的安全风险,因为如果从mysql访问文件,您可以访问mysql用户可以访问的任何文件,从而绕过基于用户的文件权限.

为了解决这个问题,您可以将查询直接运行到您用于运行sql的任何shell /语言的输出中.

这是一个*nix示例

>$ echo "select count(predicate),subject from TableA group by subject"  | mysql -u yourusername -p yourdatabasename > ~/XYZ/outputfile.txt

但是在没有"\"的情况下在一行上完成所有操作或使用"\"来逃避换行符.

这里发生的是你正在运行mysql客户端的查询并且它正在吐出结果,然后你将输出定向到一个文件.因此永远不会从mysql中调用该文件,它是在mysql运行后调用的.

因此,使用mysql获取信息,然后将数据从您自己的用户shell转储到文件中,您就可以了.

或者找到一种方法来获得outfile mysql权限,无论哪种方式.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有