这学期刚学数据库要用到MySQL,我在导入数据时遇到了如下报错:ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement.
几经探索,终于解决了这一问题。
首先,这个问题简单来说就是MySQL设置了一个变量secure-file-priv
来配置默认导入导出数据的位置。
可以通过命令来查看这一变量的值:show variables like "%secu%";
可以看到我这里的变量值是"",或者说什么也没有。这是我已经设置完的情况。
而如果没有设置的话,这里的变量值会是NULL
。
那么要怎么设置这一变量呢?
我用的Mac,windows应该也差不多。
首先在访达中,按组合键shift+command+g进入这一路径:/usr/local/etc
然后查看该文件夹中是否有文件my.cnf
。
如果没有的话,可以进入/usr/local/mysql-8.0.12-macos10.13-x86_64/support-files
中找这个文件my-default.cnf
。
把它复制粘贴到刚才那个文件夹并改名为my.cnf
。
然后用文本编辑器打开它,然后在[mysqld]
下将secure-file-priv
设置为secure-file-priv = ""
,若没有则自行添加。保存。
别的教程到这就结束了,我当初一开始也是只是做到这里,但是依旧会报和一开始一样的错,查询secure-file-priv
的变量值也依旧是NULL
。
设置Configuration File!
我的MySQL版本是8.0.12,我没有用过别的版本所以不知道其他版本是否有这一选项。
上面只是写好了文件,但是在MySQL的设置中还没有指向它,所以我们需要如下操作才能让my.cnf
起作用。
在系统偏好设置 -> MySQL -> Configuration中,将Configuration File
打上勾并且设置文件路径为刚才修改的my.cnf
的路径。
重启MySQL。
再查看secure-file-priv
的值,应该就可以啦!
默认路径
好多博客都说将secure-file-priv
设置为secure-file-priv = ""
,就可以是任意路径,但我不知道是不是版本的原因,即使是这样设置,MySQL读取文件还是有一个默认路径的,如果你要读取数据,还是要把文件放到对应路径下。
我的路径是/usr/local/mysql-8.0.12-macos10.13-x86_64/data/(database名)
。
如果不确定的话,可以通过报错来查看默认路径。