ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

简介: ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement


背景

最近业务进行数据迁移,由于数据量不大,我们选择使用MySQL导入导出功能。在使用过程中遇到一些问题,这次在本文中进行总结。


问题

  1. 导入导出命令参数的选用。
  2. 报错:The MySQL server is running with the --secure-file-priv option so it cannot execute this statement


导入导出

1、创建表

创建带有json类型的表

createtable t1(id int, data json default null,dt datetime);

2、插入数据

insertinto t1(id ,dt)values(1,now());insertinto t1(id, data, dt)values(2,"[{""id"": ""1"", ""name"": ""zhang3""}, {""id"": ""2"", ""name"": ""li4""}]", now());insertinto t1(id)values(3);

查看数据结果

mysql>select*from t1;+------+-------------------------------------------------------------+---------------------+| id   | data                                                        | dt                  |+------+-------------------------------------------------------------+---------------------+|1|NULL|2022-12-3009:48:05||2|[{"id":"1","name":"zhang3"},{"id":"2","name":"li4"}]|2022-12-3009:48:05||3|NULL|NULL|+------+-------------------------------------------------------------+---------------------+

3、导出CSV数据


报错:ERROR 1290 (HY000)

mysql>select*from t1 into outfile '/tmp/t1.csv' FIELDS TERMINATED BY',' ENCLOSED BY'"' LINES TERMINATED BY'\r\n';ERROR 1290(HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

原因:在mysql服务启动使用了--secure-file-priv 选项,所以不能指定任意的路径

解决办法

  1. 重新配置 --secure-file-priv 参数,重新启动mysql。
  1. 此配置,如果设置为:"",可以使用任意路径
  2. 若设置为NULL,禁用导入导出
  3. 若设置指定路径,则需要使用指定路径
  1. 选择指定的路径进行输出。 (推荐)
  2. 通过命令查看指定路径
mysql> show global variables like'secure_file_priv';+------------------+-----------------------------------------+| Variable_name    | Value                                   |+------------------+-----------------------------------------+| secure_file_priv |/var/opt/rh/rh-mysql80/lib/mysql-files/|+------------------+-----------------------------------------+

重新导出

mysql>select*from t1 into outfile '/var/opt/rh/rh-mysql80/lib/mysql-files/t1.csv' FIELDS TERMINATED BY',' ENCLOSED BY'"' LINES TERMINATED BY'\r\n';Query OK,3 rows affected (0.01 sec)

导出参数说明:

  • FIELDS TERMINATED BY ','  指定字段结束字符为:','
  • ENCLOSED BY '"' 指定每个字段封闭字符为:'"'
  • LINES TERMINATED BY '\r\n' 指定每行的结束字符为:'\r\n'

查看结果

sh-4.2# cat /var/opt/rh/rh-mysql80/lib/mysql-files/t1.csv"1",\N,"2022-12-30 09:48:05""2","[{\"id\": \"1\", \"name\": \"zhang3\"}, {\"id\": \"2\", \"name\": \"li4\"}]","2022-12-30 09:48:05""3",\N,\N

说明:

  • \N 为NULL 转义字符

4、导入数据

创建临时表结构

createtable t1_bak(id int, data json default null,dt datetime);


导入数据:使用导出时相同的参数

mysql> load data infile '/var/opt/rh/rh-mysql80/lib/mysql-files/t1.csv'intotable t1_bak FIELDS TERMINATED BY',' ENCLOSED BY'"' LINES TERMINATED BY'\r\n';Query OK,3 rows affected (0.04 sec)Records:3  Deleted:0  Skipped:0  Warnings:0

查看结果

mysql>select*from t1_bak;+------+-------------------------------------------------------------+---------------------+| id   | data                                                        | dt                  |+------+-------------------------------------------------------------+---------------------+|1|NULL|2022-12-3009:48:05||2|[{"id":"1","name":"zhang3"},{"id":"2","name":"li4"}]|2022-12-3009:48:05||3|NULL|NULL|+------+-------------------------------------------------------------+---------------------+3 rows inset(0.00 sec)





相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
关系型数据库 MySQL
MySQL错误 -.--secure-file-priv 无导出权限
MySQL错误 -.--secure-file-priv 无导出权限
1093 0
|
关系型数据库 MySQL
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file
1569 0
|
关系型数据库 MySQL 数据安全/隐私保护
关于Navicat连接MySQL 报 Authentication plugin ‘caching_sha2_password‘ cannot be loaded
关于Navicat连接MySQL 报 Authentication plugin ‘caching_sha2_password‘ cannot be loaded
2144 2
|
关系型数据库 MySQL
MySQL 8.0 - Authentication plugin ‘caching_sha2_password‘ cannot be loaded 原因及解决办法
MySQL 8.0 - Authentication plugin ‘caching_sha2_password‘ cannot be loaded 原因及解决办法
851 1
|
关系型数据库 MySQL
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file
mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file
3094 2
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL连接ERROR 2059 (HY000): Authentication plugin ‘caching_sha2_password‘ cannot be loaded
MySQL连接ERROR 2059 (HY000): Authentication plugin ‘caching_sha2_password‘ cannot be loaded
2431 0
|
关系型数据库 MySQL
Authentication plugin ‘caching_sha2_password‘ cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2
Authentication plugin ‘caching_sha2_password‘ cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2
2011 0
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
690 158
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。

推荐镜像

更多