在MySQL 5.7 中当您想要导出生成安全性较好的文件时可以使用以下选项
发布时间:2023-09-13 14:34:02 所属栏目:MySql教程 来源:
导读:下文主要给大家带来mysql5.7导出数据时出现--secure-file-priv选项应对方法,希望mysql5.7导出数据时出现--secure-file-priv选项应对方法能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,
下文主要给大家带来mysql5.7导出数据时出现--secure-file-priv选项应对方法,希望mysql5.7导出数据时出现--secure-file-priv选项应对方法能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。 mysql可使用 into outfile 参数把表中数据导出到csv,例如可用以下命令把user表的数据导出到user.csv select * from user into outfile '/tmp/user.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n 执行后,user表的数据会导出到/tmp/user.csv。 参数说明: into outfile ‘导出的目录和文件名’ 指定导出的目录和文件名 fields terminated by ‘字段间分隔符’ 定义字段间的分隔符 optionally enclosed by ‘字段包围符’ 定义包围字段的字符(数值型字段无效) lines terminated by ‘行间分隔符’ 定义每行的分隔符 问题分析 mysql5.7导出数据时出现--secure-file-priv选项应对方法 以上命令在mysql5.6下运行没有问题,但在mysql5.7下运行则出现了以下错误。 ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 查看官方文档,secure_file_priv参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录。 secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。 secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。 secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。 查看 secure_file_priv 的值,默认为NULL,表示限制不能导入导出。 mysql> show global variables like '%secure_file_priv%'; +------------------+-------+| Variable_name | Value | +------------------+-------+| secure_file_priv | NULL | +------------------+-------+1 row in set (0.00 sec) 因为 secure_file_priv 参数是只读参数,不能使用set global命令修改。 mysql> set global secure_file_priv=''; ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable 解决方法 打开my.cnf 或 my.ini,加入以下语句后重启mysql。 secure_file_priv='' 查看secure_file_priv修改后的值 mysql> show global variables like '%secure_file_priv%'; +------------------+-------+| Variable_name | Value | +------------------+-------+| secure_file_priv | | +------------------+-------+1 row in set (0.00 sec) 修改后再次执行,成功导出。 '; 执行后,user表的数据会导出到/tmp/user.csv。 参数说明: into outfile ‘导出的目录和文件名’ 指定导出的目录和文件名 fields terminated by ‘字段间分隔符’ 定义字段间的分隔符 optionally enclosed by ‘字段包围符’ 定义包围字段的字符(数值型字段无效) lines terminated by ‘行间分隔符’ 定义每行的分隔符 问题分析 以上命令在mysql5.6下运行没有问题,但在mysql5.7下运行则出现了以下错误。 ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 查看官方文档,secure_file_priv参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录。 secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。 secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。 secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。 查看 secure_file_priv 的值,默认为NULL,表示限制不能导入导出。 mysql> show global variables like '%secure_file_priv%'; +------------------+-------+| Variable_name | Value | +------------------+-------+| secure_file_priv | NULL | +------------------+-------+1 row in set (0.00 sec) 因为 secure_file_priv 参数是只读参数,不能使用set global命令修改。 mysql> set global secure_file_priv=''; ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable 解决方法 打开my.cnf 或 my.ini,加入以下语句后重启mysql。 secure_file_priv='' 查看secure_file_priv修改后的值 mysql> show global variables like '%secure_file_priv%'; +------------------+-------+| Variable_name | Value | +------------------+-------+| secure_file_priv | | +------------------+-------+1 row in set (0.00 sec) 修改后再次执行,成功导出。 mysql> select * from user into outfile '/tmp/user.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n'; Query OK, 15 rows affected (0.00 sec) (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐