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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 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)





相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
530 69
|
SQL 存储 安全
MySQL:Prepared Statement 预处理语句
MySQL 预处理语句是一种高效、安全的执行 SQL 查询的方法。通过预编译 SQL 语句,可以显著提升查询性能,并有效防止 SQL 注入攻击。掌握预处理语句的使用方法,对于优化数据库操作和提高应用程序的安全性具有重要意义。希望本文能帮助你更好地理解和使用 MySQL 预处理语句。
609 7
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
1328 9
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
关系型数据库 MySQL
MySQL 8.0 - Authentication plugin ‘caching_sha2_password‘ cannot be loaded 原因及解决办法
MySQL 8.0 - Authentication plugin ‘caching_sha2_password‘ cannot be loaded 原因及解决办法
634 1
|
数据采集 关系型数据库 MySQL
大数据-业务数据采集-FlinkCDC The MySQL server is not configured to use a ROW binlog_format
大数据-业务数据采集-FlinkCDC The MySQL server is not configured to use a ROW binlog_format
220 1
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1360 3
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
1493 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
2495 2
|
7月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
484 158

推荐镜像

更多