WINDOWS MYSQL导出文件时,报错,错误码1290

来源:互联网 发布:noi算法优化 编辑:程序博客网 时间:2024/06/18 06:29

MYSQL5.7以上的版本

用insert * from table_name  into outfile 'dir'时,提示图书错误

此时先通过这个命令查看一下  

show VARIABLES like '%secure%'

如果secure_file_priv是NULL

则出现错误的原因是因为MYSQL5.7增加了新权限,secure_file_priv默认为NULL,限制了数据的导入导出。

此时我们可以先停止MYSQL,net stop mysql;

然后在命令行下用  mysqld --secure-file-priv=dir_name;

//dir_name,可以是一个具体的目录,比如D:/,此时导入导出操作可以再D盘及其目录下行(如果需要保存在名字为汉字的文件夹中,则需要自己设置字符集,不然找不到目录)(如果要保存的文件名字为汉字,也要设置字符集,不然保存的文件名字为乱码)

//也可以是空(不是NULL),空是什么都不加,此时,所有的地方都可以进行(如果用到汉字,操作同上面括号)

//导入导出操作

此时,该命令窗口卡住,可以再打开另一个命令窗口,启用mysql ,net start mysql;启用时可能会提示启动失败,这个不用担心,已经可以使用了,此时已经可以登录使用了。只不过开启或者关闭服务都提示失败。等下次重启就正常了。

上一下MYSQL 操作手册的说明:已经翻译成了中文版(原网址为:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_secure_file_priv)


secure_file_priv

命令行格式--secure-file-priv=dir_name系统变量的名字secure_file_priv变量作用域全球动态变量没有允许的值(< = 5.6.33)类型字符串默认的empty有效值emptydirname允许的值(> = 5.6.34)类型字符串默认的platform specific有效值emptydirnameNULL

该变量用于限制数据导入和导出操作的影响,比如那些执行的 LOAD DATA SELECT ... INTO OUTFILE语句和 LOAD_FILE()函数。这些操作是允许只有用户 FILE特权。

secure_file_priv可能是设置如下:

  • 如果空,变量没有影响。这不是一个安全的设置。

  • 如果设置一个目录的名称,服务器限制进出口业务工作只有该目录中的文件。该目录必须存在;服务器将不创建它。

  • 如果设置为 NULL,服务器禁用进出口操作。MySQL 5.6.34这个值是允许的。

在MySQL 5.6.34之前,这个变量默认是空的。5.6.34,默认值是特定于平台和依赖的价值 INSTALL_LAYOUT CMake选项,如下表所示。指定默认的secure_file_priv值显式地从源,如果您正在构建使用 INSTALL_SECURE_FILE_PRIVDIR CMake选择。

INSTALL_LAYOUT价值默认的 secure_file_priv价值STANDALONE, WINNULLDEB, RPM, SLES, SVR4/var/lib/mysql-files否则mysql-files CMAKE_INSTALL_PREFIX价值

设置默认的 secure_file_priv libmysqld嵌入式服务器,使用 INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR CMake选择。这个选项的默认值 NULL.

MySQL 5.6.34,服务器检查的价值 secure_file_priv在启动和写一个警告的错误日志,如果值是不安全的。一个非NULL值被认为是不安全的,如果它是空的,或值是数据目录或子目录,或一个目录,所有用户都可以访问。如果 secure_file_priv被设置为一个不存在的路径时,服务器将一个错误消息写入错误日志并退出。


0 0
原创粉丝点击