Windows10下MySQL 8.0禁用secure_file_priv及CSV加载报错求助
解决MySQL 8.0 LOAD DATA INFILE的secure_file_priv报错问题
首先咱们先理清问题根源:secure_file_priv是MySQL的只读系统变量,没法通过SET命令直接修改,必须修改配置文件并重启服务才能生效。针对你找不到my.ini的情况,我给你一步步拆解解决方案:
方法一:无需改配置,直接用默认允许路径(最快解决)
既然SHOW VARIABLES LIKE "secure_file_priv";显示的允许路径是C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\,你只需要把a.csv复制到这个Uploads目录下,然后修改LOAD DATA语句的文件路径即可:
LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\a.csv' INTO TABLE errorClick columns terminated by ',' lines terminated by ',\r\n' ignore 1 lines;
这样不用改任何配置,就能直接执行成功。
方法二:修改secure_file_priv允许任意路径(长期方案)
如果不想每次都手动移动文件,那需要修改MySQL的配置文件,步骤如下:
1. 找到正确的my.ini位置
你说在C:\ProgramData\MySQL\MySQL Server 8.0下没找到,大概率是这两个原因:
- 文件被隐藏:Windows默认会隐藏系统文件,你可以在文件夹顶部的「查看」选项卡中勾选「隐藏的项目」,就能看到
my.ini了。 - 通过MySQL服务属性定位:
- 右键「此电脑」→ 选择「管理」→ 进入「服务和应用程序」→ 点击「服务」
- 找到名为
MySQL80的服务,右键选「属性」 - 在「可执行文件路径」里,会看到类似
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80的内容,--defaults-file后面就是my.ini的准确路径。
2. 修改my.ini配置
找到my.ini后,用记事本或文本编辑器打开:
- 找到
[mysqld]段落(如果没有就手动加在文件末尾) - 添加或修改一行:
(如果只想允许特定路径,比如你的C盘根目录,可写成secure_file_priv = ""secure_file_priv = "C:\\")
3. 重启MySQL服务
回到「服务」界面,找到MySQL80服务,右键选「重启」,等待服务重启完成。
4. 验证配置生效
重新登录MySQL,执行:
SHOW VARIABLES LIKE "secure_file_priv";
如果结果显示secure_file_priv的值是你设置的(空或指定路径),就可以用原来的LOAD DATA语句加载C:\a.csv了。
注意事项
- 如果需要手动创建
my.ini文件,要确保文件编码为ANSI,否则MySQL可能读取失败。 - 修改配置文件后必须重启服务,否则新配置不会生效。
内容的提问来源于stack exchange,提问作者Nurav
相关产品推荐
相关产品推荐

