作者:WenWu_Both
出处:http://blog.csdn.net/wenwu_both/article/
版权:本文版权归作者和CSDN博客共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文链接;否则必究法律责任
由于最近的项目需要用到比较轻量级的数据库,一下子就想到了MySQL,寻思就装上先摸索一下。
我的安装环境:Windows 10系统 安装包:mysql-5.7.18-winx64
安装包为当前最新版本,安装过程在以前的基础上做了些变动,这里我参考了博客:MySQL v5.7.18 版本解压安装
安装过程,在初始化数据库这一步的时候,教程给的命令行为:
mysqld --initialize-insecure --user=mysql
当时就感觉这里是个坑,因为命令行里没有my.ini这个自定义配置项的信息,我寻思可能新版本比较高级吧,会自动检索配置文件,所以也就没放在心上,一路安装成功,并实现了python的调用。
然鹅。。。。。。
后面我需要将csv数据导入数据库:
load data
infile 'D:\\201701.csv'
into table underground
fields terminated by ','
(
编号,
票卡号,
交易日期,
交易时间,
票卡类型,
交易类型,
交易车站,
上次交易车站,
上次交易时间,
交易金额
);
执行完上述代码,直接给我报错:
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
网上一搜说这种情况是secure_file_priv的属性值为null造成的。
我们可以通过secure_file_priv 来完成对导入|导出的限制
secure_file_priv
1、限制mysqld 不允许导入 | 导出
mysqld –secure_file_prive=null
2、限制mysqld 的导入 | 导出 只能发生在/tmp/目录下
mysqld –secure_file_priv=/tmp/
3、不对mysqld 的导入 | 导出做限制
mysqld –secure_file_priv=‘’
那就好办了,直接修改my.ini配置文件,添加‘secure_file_priv=”’即可:
[client]
port=3308
default-character-set=utf8
[mysqld]
secure_file_priv=''
port=3308
character_set_server=utf8
basedir=D://mysql
datadir=D://mysql//data
[WinMySQLAdmin]
D://mysql//bin//mysqld.exe
重启服务之后,发现不行,难道是添加的命令行错了,看到网上很多版本:
a. secure_file_priv=”
b. secure_file_priv=
c. secure_file_priv=’\’
一一试过,都不行!!!
后续分析过很多其他的原因,都试过之后,还是不行。
mysql>show variables like '%secure%'
之后, secure_file_priv的值永远为null
简直快要崩溃了。。。
晚上快睡觉的时候,无意中看到一篇关于mysql-5.7.18-winx64的官方文档翻译的博客,才隐隐约约感觉导入导出受限应该是初始化那步没有指定配置文件路径造成的,马上行动,打开电脑,修改初始化代码:
mysqld.exe --defaults-file=D:/mysql/my.ini --initialize-insecure
查询secure_file_priv:
可以看到secure_file_priv的属性终于为空值了
执行数据导入:
成功!!!
内牛满面呀,这件事教育我们,有问题还是得多看看官方文档呀,不说了,我要好好学英语了,呜呜。。。。。。