解决 Mysql outfile 的报错问题!

一、故障现象:
Mysql可使用 into outfile 参数把表中数据导出到文件,
例如可用以下命令把 test 表的数据导出到 test.txt
SELECT * FROM newdb.test INTO OUTFILE 'test.txt';
以上命令在mysql5.6下运行没有问题,但在mysql5.7下运行则出现了以下错误:
'ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement'
二、查看故障点:
查看官方文档,secure_file_priv参数 用于限制LOAD DATA, SELECT …OUTFILE,
LOAD_FILE()传到哪个指定目录。
secure_file_priv 为 'NULL' 时,表示限制mysqld不允许导入或导出。 secure_file_priv 为 '/tmp' 时,表示限制mysqld只能在/tmp目录中执行导入导出; secure_file_priv '没有值'时,表示不限制mysqld在任意目录的导入导出。
三、核实故障点:
查看 secure_file_priv 的值,默认为NULL,表示限制不能导入导出。
mysql> show global variables like '%secure_file_priv%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | secure_file_priv | NULL | +------------------+-------+ 1 row in set (0.00 sec)
因为 secure_file_priv 参数是只读参数,'不能使用set global命令修改'。
mysql> # set global secure_file_priv=''; 'ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable'
四、解决方法:
打开my.cnf ,加入以下语句后重启mysql。
# vim /etc/my.cnf 'secure_file_priv='''
查看secure_file_priv修改后的值
mysql> show global variables like '%secure_file_priv%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | secure_file_priv | | +------------------+-------+ 1 row in set (0.00 sec)
五、查看成果:
修改后再次执行,成功导出。
mysql> SELECT * FROM newdb.test INTO OUTFILE 'test.txt'; 1 queries executed, 1 success, 0 errors, 0 warnings 查询:select * from newdb.test into outfile 'test.txt' 共 2 行受到影响 执行耗时 : 0.044 sec 传送时间 : 0 sec 总耗时 : 0.045 sec
注意,导出文件,在
/www/server/data/newdb/test.txt
相关推荐
-
MySQL 安装失败,提示Apply Security Settings 的处理办法
MySQL 安装失败,提示Apply Security Settings 的处理办法2025-04-20 01:54:57 -
MySQL事务隔离级别详解2025-04-20 01:44:01
-
一文说清nginx规则匹配(含案例分析)2025-04-20 01:10:02
-
运维服务篇:Nginx常用功能(rewrite重定向/location定位等)
运维服务篇:Nginx常用功能(rewrite重定向/location定位等)2025-04-20 00:55:25 -
php定义变量规则不能包含哪些字符?2025-04-20 00:27:24