MySQL 8.0升级后secure_file_priv配置无效致1290错误求助
MySQL 8.0 secure_file_priv配置失效问题解决
版本变更导致的核心原因
MySQL 8.0对secure_file_priv参数的规则做了严格限制,和5.7的主要差异:
- 8.0默认值为
NULL(完全禁止导入导出操作),且不允许通过配置文件将其设为空字符串(5.7支持设为空字符串来解除目录限制) - 该参数为只读参数,不能通过
SET GLOBAL命令动态修改,必须修改配置文件后重启服务才会生效
你的操作失效的具体原因
- 注释
my.ini中的secure_file_priv选项:8.0会自动使用默认值NULL,所以依然会触发1290错误 - 设置为待导入数据的目录后报错:大概率是没重启MySQL服务,或者目录权限不足、路径格式错误(Windows下需用正斜杠
/或双反斜杠\\)
解决步骤
修改配置文件
找到my.ini中的[mysqld]段落,添加或修改以下配置(替换为你的数据目录):secure_file_priv = "D:/retrosheet_data/"注意:必须指定具体存在的目录,且MySQL服务运行用户需要有该目录的读写权限。
重启MySQL服务
- Windows系统:打开「服务」面板,找到MySQL服务(通常名为
MySQL80),右键选择「重启」 - 命令行方式:
net stop MySQL80 net start MySQL80
- Windows系统:打开「服务」面板,找到MySQL服务(通常名为
验证配置生效
在SQLYOG中执行命令:SHOW VARIABLES LIKE 'secure_file_priv';确认返回值为你设置的目录路径。
调整导入脚本
确保LOAD DATA INFILE语句中指定的文件路径在secure_file_priv的目录范围内,例如:LOAD DATA INFILE 'D:/retrosheet_data/game_logs.csv' INTO TABLE retrosheet.games;
内容的提问来源于stack exchange,提问作者grig109
相关产品推荐
相关产品推荐

