填坑The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

刚刚上午解决了Access Denied的问题,下午受上午解决问题的思路启发,结果很快就解决了关于MySQL8.0版本以上的文件导入权限问题!!!
在这里插入图片描述
相信大家都在初次导入外部文件到MySQL的适合遇到了这个问题吧:
在这里插入图片描述
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

然后大家也都搜索发现,普遍回答都是教大家去
my.ini(Windows系统)或者my.cnf(Mac系统)文件[mysqld]里面添加这行命令:“ secure_file_priv=’’ " 或者这么写 secure_file_priv=
在这里插入图片描述
然后重启MySQL服务是吧?
又或者添加了这个命令在my.ini文件,但是还是没生效,于是又不断地谷歌百度,发现有的教大家去更改默认MySQL文件执行路径为my.ini文件所在位置,如下图:
在这里插入图片描述
在这里插入图片描述
以上两种方法可能对MySQL8.0版本以下地有效,第二种可能会产生其余问题,暂时不讲,空了补上。但是对我的MySQL8.0版本都无效!!!


(我是机智的分割线)

2020.02.04更新
有朋友反应说下面的两个方无效,我今天又尝试了一下,发现需要同时开启两个cmd才可以更改文件导入权限,像下面这张图这样:
在这里插入图片描述


现在回到正题,如何解决MySQL8.0以上版本地这个问题呢?
以下暂时只针对Windows系统,并未在其他系统上面测试,欢迎大家测试!)

我们翻到官方文档那一页去看官方对 –secure-file-priv 地解释:
在这里插入图片描述
官方解释了,这个变量是全局变量,存在三种值:

1. 空字符串
2. 文件路径
3. NULL

然后一般我们如果在安装地时候没有设置过,都会是默认地根据平台地设置进行设置,
我这里默认就是NULL值,即禁止外部文件导入和导出。
空字符串即随意导入导出,相对最自由,但是安全系数很低;
文件路径是官方推荐地方法,即你可以设置成你想导入地文件地址,但是前提是这个路径是存在地,MySQL不会自动给你创建。

好了理解上面三个值地意思后,我们再看Command-Line Format这个地方,其实官方已经给出了这个变量在命令行地设置方法,即解决办法。就是它后面对应地值内容,所以我们就开始更改这个权限如下步骤:

  • 先要去把MySQL服务停止了,才能改:
    在这里插入图片描述

  • 然后cd到你的MySQL的目录下面;

  • 关键地一步来了!第一种解法(空):
    输入如下指令即可修改导入导出文件的权限:(是的,你没看错,8.0版本的MySQL其实并不需要my.ini文件了,直接在命令行就可以执行很多操作!!!

mysqld --secure-file-priv=  --console 

然后会看到如下画面:
在这里插入图片描述
这个代表刚刚的命令已经生效了,也就是导入文件的权限已经被更改了,现在可以自由导入。
PS:最后加console是为了有内容输出,看看这个命令都执行了什么,据官方文档说也可以不加!

  • 第二种解法(路径,官方推荐的):
mysqld --secure-file-priv=C(也不一定C盘,看你要读取文件在哪个盘):\\你想读取的文件路径\\你要读取的文件路径 --console 

注意:路径之间是双反斜杠。

  • 然后我们再打开普通模式的cmd,正常登录并查看secure这个全局变量,此时可以发现,他已经被更改了(我这里是空的显示就是对的):
    在这里插入图片描述
    然后就可以进行外部文件的导入了。

经过这又一次踩坑填坑过程,掌柜发现还是官方文档靠谱,以后还是出问题先查官方文档!!!而且MySQL这个看似简单的语言其实有很多细节需要注意的,不同系统的不同MySQL版本解决办法看官方文档
更易加深理解其中区别和奥妙!

最后谢谢大家的阅读,如有错误,请指正!
在这里插入图片描述
参考资料:
MySQL8.0官方文档

发布了30 篇原创文章 · 获赞 29 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41013322/article/details/103532940