加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

在MySQL 5.7 中当您想要导出生成安全性较好的文件时可以使用以下选项

发布时间:2023-09-13 14:34:02 所属栏目:MySql教程 来源:
导读:下文主要给大家带来mysql5.7导出数据时出现--secure-file-priv选项应对方法,希望mysql5.7导出数据时出现--secure-file-priv选项应对方法能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,
下文主要给大家带来mysql5.7导出数据时出现--secure-file-priv选项应对方法,希望mysql5.7导出数据时出现--secure-file-priv选项应对方法能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。
 
mysql可使用 into outfile 参数把表中数据导出到csv,例如可用以下命令把user表的数据导出到user.csv
 
select * from user into outfile '/tmp/user.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n
 
执行后,user表的数据会导出到/tmp/user.csv。
 
参数说明:
 
into outfile ‘导出的目录和文件名’
 
指定导出的目录和文件名
 
fields terminated by ‘字段间分隔符’
 
定义字段间的分隔符
 
optionally enclosed by ‘字段包围符’
 
定义包围字段的字符(数值型字段无效)
 
lines terminated by ‘行间分隔符’
 
定义每行的分隔符
 
问题分析
 
mysql5.7导出数据时出现--secure-file-priv选项应对方法
 
以上命令在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 或 my.ini,加入以下语句后重启mysql。
 
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)
 
修改后再次执行,成功导出。
 
';
 
执行后,user表的数据会导出到/tmp/user.csv。
 
参数说明:
 
into outfile ‘导出的目录和文件名’
 
指定导出的目录和文件名
 
fields terminated by ‘字段间分隔符’
 
定义字段间的分隔符
 
optionally enclosed by ‘字段包围符’
 
定义包围字段的字符(数值型字段无效)
 
lines terminated by ‘行间分隔符’
 
定义每行的分隔符
 
问题分析
 
以上命令在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 或 my.ini,加入以下语句后重启mysql。
 
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 user into outfile '/tmp/user.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n';
 
Query OK, 15 rows affected (0.00 sec)
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章