📜  错误 1290 (HY000):MySQL 服务器正在使用 --secure-file-priv 选项运行,因此无法执行此语句 - SQL (1)

📅  最后修改于: 2023-12-03 15:42:08.303000             🧑  作者: Mango

MySQL 服务器使用 --secure-file-priv 选项运行导致无法执行语句

当 MySQL 服务器使用--secure-file-priv选项运行时,会使得执行 load data local 语句出现错误错误 1290 (HY000):MySQL 服务器正在使用 --secure-file-priv 选项运行,因此无法执行此语句

这是由于MySQL在安全性方面进行了升级,为了防止潜在的安全风险,不允许将文件保存在服务器的任意目录中。--secure-file-priv选项的作用是设置数据文件的路径,只允许读取指定路径下的文件。

解决方法有以下两种:

  1. 修改--secure-file-priv的设置,设置允许读取的文件路径。可以通过以下语句查看当前路径设置:
SHOW VARIABLES LIKE 'secure_file_priv';

如果返回结果为NULL,则表示没有设置,可以通过以下语句设置新的路径:

SET GLOBAL secure_file_priv='/new/path/';

请注意替换/new/path/为您自己的路径。

  1. 将数据文件保存在可以被服务器访问的路径下,例如/var/lib/mysql-files/。可以通过以下语句修改文件路径并加载数据:
LOAD DATA LOCAL INFILE '/var/lib/mysql-files/data.csv' INTO TABLE tablename FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

请注意替换/var/lib/mysql-files/data.csv为您自己的路径和文件名。

总结:

--secure-file-priv选项提供了更好的安全性保证,但是也会制约用户的一些操作。如果需要执行LOAD DATA LOCAL INFILE语句,请根据自身需求选择合适的解决方法。