ermutuxia

2023-03-01   阅读量: 1529

Mysql

Error Code: 1290. The MySQL server is running with the --secure-file-priv option

扫码加入数据分析学习群

My SQL 中:Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement


image.png


这是因为在mysql中如果想要导入外部格式的数据文件,比如说csv文件,就需要先把这些文件放到mysql认为的安全路径下,才能上传成功。这也是出于对用户的保护。

如果想要成功读取外部文件,就有两种思路。

一种思路是将csv文件放到默认的数据安全路径下。

第二种思路就是将数据安全路径参数设定为空,允许导入任意路径下的文件。


接下来我们先讲第一种思路

如何查看你的安全路径是哪呢?

可以按照如下的步骤操作一下:

1.点击开始,启动mysql程序

image.png

image.png

2.接下来查看mysql默认的安全路径

输入show variables like 'secure_file_priv';

然后回车,注意这里的分号不要忘记,因为这是mysql内部语法。

得到的结果如下图:

image.png

可以看到安全路径如图所示,把要导入的csv文件放到这个路径下就可以成功导入了。


然后我们再看第二种思路

1.我们修改配置文件

我们的配置文件是一个名字为my.ini的文件,这里面有关于众多参数的定义

用记事本方式或者notepad++打开C:\ProgramData\MySQL\MySQL Server 8.0下面的my.ini文件,我们搜索secure(注意不要搜secure_file_priv,否则你搜不到),搜索结果如下:

# Secure File Priv.

secure-file-priv="C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"

image.png

image.png


这里在我们的搜索结果里,我看到只有这一处出现了给secure-file-priv赋值的情况,其他地方没有出现,因此我们只需要改这一个地方的值,肯定正确,我们往上翻看,会发现这这个赋值是出现在[mysqld]的下面,如果你的这个赋值在文中多次出现,并且有的赋值在[mysqld]下面,有的不在,那请你修改[mysqld]下面的secure-file-priv值。

我这里情况就比较简单了,我们进行如下修改然后保存这个文件,并且关闭这个文件。

secure-file-priv=""

image.png


注意这里仅仅是修改了这个文本文件,但这个修改还没有真正起作用,如果你用show 命令去看变量secure_file_priv的值,还是以前的路径值,如何让我们这个修改生效呢。

首先打开我们的mysql服务列表,然后查看那个mysql服务是与这个my.ini文件关联的,也就是看哪个mysql服务是根据这个my.ini文件进行配置的。

到了mysql服务列表页面我们选择一个mysql服务,然后右键点击选择属性,可以看到这个服务的关联ini文件。

2.找到目前启动的mysql服务


如何查看你当前的电脑启动了哪些服务,请参考我其他帖子。https://www.cda.cn/discuss/post/details/602f6cd4352c47611b03f1be

image.png

可以看到目前启动的是MySQL80服务,我们看下这个服务关联的ini文件是哪个

image.png

可执行文件的路径取值如下:

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80

从而可以看出这个mysql80服务对应的ini配置文件,就是我们前面修改的my.ini配置文件。

3.关闭mysql(这个都知道呀),停止mysql服务(这个可以看我另一个帖子)https://www.cda.cn/discuss/post/details/602f57f74aa67c5afd277182

image.png

image.png

可以看到MySQL80服务已经停止了

4.重启mysql服务(这样才能让我们重新配置的参数生效,具体如何操作可以看我另一个帖子),重启mysql。

image.png

发现通过执行net start MySQL80命令无法启动MySQL服务。

考虑到这一系列怪事都是出现在修改my.ini文件之后我们把我们的my.ini文件用notepad++打开,将编码转为ansi,然后保存关闭。

然后重新执行。如何用notepad对文件重新编码,可以参考我这个链接。https://www.cda.cn/discuss/post/details/5f8fd2ea7700f37ebe89e80b

image.png

这次MySQL80服务终于启动成功了

我们再打开workbench,重新执行一下那会执行出现错误的代码

image.png

可以看到这次再执行就没有错误提示了。

141.8182 3 0 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子