MySQL错误1290由--secure-file-priv安全限制触发,需通过SHOW VARIABLES LIKE 'secure_file_priv'查看当前值;若为具体路径则须将文件置于该目录并用相对路径操作,NULL表示完全禁用,空字符串在新版中已不支持。

MySQL 错误 1290:The MySQL server is running with the --secure-file-priv option
这个报错不是语法或权限问题,而是 MySQL 启动时强制启用了 --secure-file-priv 安全限制,导致 LOAD DATA INFILE、SELECT ... INTO OUTFILE 等涉及文件读写的操作被拦截。只要看到错误信息里有 secure-file-priv 字样,基本就锁定是这个配置在起作用。
查当前 secure-file-priv 的实际值
连接 MySQL 后执行:
SHOW VARIABLES LIKE 'secure_file_priv';
返回结果中 Value 列会显示一个具体路径(比如 /var/lib/mysql-files/)或 NULL 或空字符串:
-
/var/lib/mysql-files/:只允许读写该目录下的文件 -
NULL:完全禁用LOAD_FILE()、LOAD DATA INFILE等功能 - 空字符串:不限制路径(不推荐,且新版 MySQL 不再支持)
临时绕过(开发/测试环境可用)
如果只是本地调试,且你控制 MySQL 启动过程,可临时关闭该限制:
- 编辑 MySQL 配置文件(如
/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf) - 在
[mysqld]段下添加:secure_file_priv = ""
- 重启 MySQL:
sudo systemctl restart mysql(或mysqld)
⚠️ 注意:secure_file_priv = "" 在 MySQL 8.0.28+ 已被移除,设为空会启动失败;此时只能设为具体目录,或保持默认并把文件移到允许路径下。
生产环境正确做法:把文件放对位置 + 权限校验
不要试图关掉安全限制,而是适配它:
- 用
SHOW VARIABLES LIKE 'secure_file_priv'查出允许路径(例如/var/lib/mysql-files/) - 把你要导入的 CSV 文件复制过去:
sudo cp /tmp/data.csv /var/lib/mysql-files/ - 确保文件属主是
mysql用户:sudo chown mysql:mysql /var/lib/mysql-files/data.csv - 再执行
LOAD DATA INFILE,路径必须写相对该目录的路径:LOAD DATA INFILE 'data.csv' INTO TABLE mytable;
路径不能带 / 开头(即不能写绝对路径),否则仍会报 1290 —— MySQL 认为这不是 secure_file_priv 所授权的路径。










