社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL 关于安全路径的报错处理

CDA数据分析师 • 8 月前 • 107 次点击  

My SQL 中报错信息如下:Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
这是因为在mysql中如果想要导入外部格式的数据文件,比如说csv文件,就需要先把这些文件放到mysql认为的安全路径下,才能上传成功。这也是出于对用户的保护。
如果想要成功读取外部文件,就有两种思路,第一种思路是将csv文件放到默认的数据安全路径下;第二种思路就是将数据安全路径参数设定为空,允许导入任意路径下的文件。
接下来我们先讲第一种思路
如何查看你的安全路径是哪呢?可以按照如下的步骤操作一下:
1.点击开始,启动mysql程序
2.接下来查看mysql默认的安全路径
输入show variables like 'secure_file_priv';
然后回车,注意这里的分号不要忘记,因为这是mysql内部语法。
得到的结果如下图:
可以看到安全路径如图所示,把要导入的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"
这里在我们的搜索结果里,我看到只有这一处出现了给secure-file-priv赋值的情况,其他地方没有出现,因此我们只需要改这一个地方的值,肯定正确,我们往上翻看,会发现这这个赋值是出现在[mysqld]的下面,如果你的这个赋值在文中多次出现,并且有的赋值在[mysqld]下面,有的不在,那请你修改[mysqld]下面的secure-file-priv值。
我这里情况就比较简单了,我们进行如下修改然后保存这个文件,并且关闭这个文件。
secure-file-priv=""
注意这里仅仅是修改了这个文本文件,但这个修改还没有真正起作用,如果你用show 命令去看变量secure_file_priv的值,还是以前的路径值,如何让我们这个修改生效呢。
首先打开我们的mysql服务列表,然后查看那个mysql服务是与这个my.ini文件关联的,也就是看哪个mysql服务是根据这个my.ini文件进行配置的。
到了mysql服务列表页面我们选择一个mysql服务,然后右键点击选择属性,可以看到这个服务的关联ini文件。
2.找到目前启动的mysql服务
如何查看你当前的电脑启动了哪些服务,请参考我其他帖子。https://www.cda.cn/discuss/post/details/602f6cd4352c47611b03f1be
可以看到目前启动的是MySQL8.0服务,我们看下这个服务关联的ini文件是哪个
可执行文件的路径取值如下:
"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
可以看到MySQL8.0服务已经停止了
4.重启mysql服务(这样才能让我们重新配置的参数生效,具体如何操作可以看我另一个帖子),重启mysql。
发现通过执行net start MySQL80命令无法启动MySQL服务。
考虑到这一系列怪事都是出现在修改my.ini文件之后我们把我们的my.ini文件用notepad++打开,将编码转为ansi,然后保存关闭。
然后重新执行。如何用notepad对文件重新编码,可以参考我这个链接。https://www.cda.cn/discuss/post/details/5f8fd2ea7700f37ebe89e80b
这次MySQL80服务终于启动成功了
我们再打开workbench,重新执行一下那会执行出现错误的代码
可以看到这次再执行就没有错误提示了。


了解更多数据分析知识、与更多优秀的人一起进群交流请扫码



群码过期或者群满请添加客服微信 CDAshujufenxi 后拉您进群

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/161672
 
107 次点击