当前位置:  开发笔记 > 编程语言 > 正文

MySQL ERROR 1290(HY000)--secure-file-priv选项

如何解决《MySQLERROR1290(HY000)--secure-file-priv选项》经验,为你挑选了4个好方法。

我正在尝试使用我的脚本中的以下代码将MySQL脚本的结果写入文本文件.

SELECT p.title, p.content, c.name FROM post p
LEFT JOIN category c ON p.category_id=c.id
INTO OUTFILE 'D:\MySql\mysqlTest.txt';

但是,我得到以下内容

错误1290(HY000):MySQL服务器正在运行--secure-file-priv选项,因此无法执行此语句

我该如何解决这个问题?



1> russian_spy..:

Ubuntu 16.04(EASY):找出你可以写的地方

mysql> SELECT @@GLOBAL.secure_file_priv;
+---------------------------+
| @@GLOBAL.secure_file_priv |
+---------------------------+
| /var/lib/mysql-files/     |
+---------------------------+
1 row in set (0.00 sec)

然后,就在那里写

mysql> SELECT * FROM train INTO OUTFILE '/var/lib/mysql-files/test.csv' FIELDS TERMINATED BY ',';
Query OK, 992931 rows affected (1.65 sec)

mysql>

Mac OSX:通过MAMP安装Mysql

找出你可以写的地方

mysql> SELECT @@GLOBAL.secure_file_priv;
+---------------------------+
| @@GLOBAL.secure_file_priv |
+---------------------------+
| NULL                      |
+---------------------------+
1 row in set (0.00 sec)

NULL意味着你被搞砸了所以你必须创建文件"〜/ .my.cnf"

启用通过MAMP安装的MySQL的读/写(在Mac上):

    打开"MAMP"使用聚光灯

    单击"停止服务器"

    编辑〜/ .my.cnf(使用vi或您喜欢的编辑器)并添加以下行:

    $ vi~/.my.cnf

[mysqld_safe]
[mysqld]
secure_file_priv="/Users/russian_spy/"

    单击"启动服务器"(在MAMP窗口中)

现在检查它是否有效:

一个.启动mysql(默认MAMP用户是root,密码也是root)

$ /Applications/MAMP/Library/bin/mysql -u root -p 

湾 在mysql中查看列入白名单的路径

mysql> SELECT @@GLOBAL.secure_file_priv;
+---------------------------+
| @@GLOBAL.secure_file_priv |
+---------------------------+
| /Users/russian_spy/          |
+---------------------------+
1 row in set (0.00 sec)

C.最后,通过将表导出train为CSV文件进行测试

mysql> SELECT * FROM train INTO OUTFILE '/Users/russian_spy/test.csv' FIELDS TERMINATED BY ',';
Query OK, 992931 rows affected (1.65 sec)

mysql>



2> 小智..:

    编辑(CentOS的/etc/my.cnf文件)或(Windows的my.ini文件)

    最后添加 secure-file-priv = ""

    使用停止mysql服务 systemctl stop mysqld

    使用重启它 systemctl start mysqld

它现在允许您导入和导出数据.



3> Naruto..:

您无法导出数据,因为它是在mysql配置文件中配置的.打开my.cnf配置文件并检查.

引用MySQL 文档

此变量用于限制数据导入和导出操作,如那些由执行的效果LOAD DATASELECT ... INTO OUTFILE报表和LOAD_FILE()功能.仅允许具有此FILE权限的用户执行这些操作.

secure_file_priv 可以设置如下:

如果为空,则变量无效.

如果设置为目录名称,则服务器会将导入和导出操作限制为仅适用于该目录中的文件.目录必须存在; 服务器不会创建它.

如果设置为NULL,则服务器禁用导入和导出操作.从MySQL 5.7.6开始允许该值.

(空值是默认值,或者可以在my.cnf中明确指定为secure_file_priv="".NULL可以使用secure_file_priv=NULL.设置值.)

因此,如果要导出数据,则需要注释此选项并重新启动mysql服务器.然后你就可以出口了.


请阅读http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html以获取更多mysql服务器系统变量.使用这些变量可以完成很多有趣的事情.

4> 小智..:

替换"\""/"文件路径.

像这样:

INTO OUTFILE 'D:/MySql/mysqlTest.txt';

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有