成航先森 成航先森

成都航院计算机系一个学生的个人博客

 

系统运维

  • 没有分类目录

最新文章

系统运维
当前位置: 首页 » 系统运维 » 溯源:mysql导入导出文件报错ERROR 1290 (HY000):–secure-file-priv

溯源:mysql导入导出文件报错ERROR 1290 (HY000):–secure-file-priv

编辑:狂族晨曦 来源:系统运维经验杂笔 日期:2017-08-12 阅读: 3,908 次 1 条评论 » 百度已收录

最后更新时间:2022-04-02

近期遇到mysql导出文件的错误,之前遇到这个错误,因为需要导出的数据少,所以直接将结果手动复制。

mysql> select * from childrenzone_order into outfile '/tmp/test.txt' fields terminated by ','  optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

但后来遇到大量的数据需要导出,简单的复制就不能满足需求了。

进行百度,发现解决方法很简单,在配置文件里增加配置,重启Mysql即可。只是,生产环境中,数据库是不能随意重启的,所以这个问题就很麻烦了。为了避免往后出现这种问题,先森觉得有必要研究清楚这个问题究竟影响了多少Mysql。

解决方法

首先是解决此类问题的方法,通过secure_file_priv 来完成对导入|导出的限制。

secure_file_priv是在 /etc/my.cnf 中的[mysqld]下配置,共有三种限制方式。

1、限制mysqld 不允许导入 | 导出:

secure_file_priv = null

2、限制mysqld 的导入 | 导出 只能发生在指定目录下,如/tmp目录:

secure_file_priv = /tmp

3、不对mysqld 的导入 | 导出做限制,有两种书写方式:

secure_file_priv = /
或
secure_file_priv =

而查询secure_file_priv的方式如下:

mysql> show variables like '%secure%';

查询secure_file_priv变量配置 -1

查询secure_file_priv变量配置

secure_file_priv变量配置的默认值为“NULL”,也就是默认不允许导入导出。

溯源

虽然知道了解决方法,但是前文也提到过,生产环境的Mysql并不能随意的重启,即使有主备。所以,弄明白受到默认禁止导入导出的Mysql版本有哪些就有必要了。

通过查询官方文档,先森找到了影响版本,见下图(点击放大)。

5.5.53.png -2

官方文档变量介绍

通过上图可以看到,最后一个被红框框选的文字:“Before MySQL 5.5.53, this variable is empty by default.在MySQL 5.5.53,这个变量默认是空的。”。这个变量在Mysql 5.5.53之后新增了“NULL”的配置,且默认为“NULL”。所以,如果发现自己的Mysql版本是5.5.53以后的,且不想限制导入导出的话,最好把变量的值配置好后择时重启Mysql。

另外,上图还介绍了,secure_file_priv这个变量是全局变量,且不能动态修改。这也是必须写入配置文件并重启Mysql的原因。

历史上的今天:

标签:
除特别注明外,本站所有文章均为成航先森 www.capjsj.cn 原创,本文共1300个字
转载请注明出处来自https://www.capjsj.cn/mysql_secure_file_priv.html
已有 1 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 的头像

    这个厉害,保存备用

    2017-08-20 00:12 回复
官方微信
发表评论 返回顶部