记一次数据导出过程

- 1 min read

做学工的时候遇到一个要导出另一个学校的数据库数据,遇到并解决了两个问题,在这里记录一下:

MySQL配置了安全文件保护

先在堡垒机登陆上目标系统,进入MySQL

image-20250326170640093

image-20250326170844035

直接使用导出语句会报错:

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

这个时候需要看设置的安全文件路径是什么

SHOW VARIABLES LIKE 'secure_file_friv';
+------------------+----------------------+
| Variable_name    | Value                |
+------------------+----------------------+
| secure_file_priv | /var/lib/mysql-files |
+------------------+----------------------+
1 row in set (0.00 sec)

这时候只需要修改导出路径和对应值一致即可成功导出

SELECT * FROM `table_name` INTO OUTFILE '/var/lib/mysql-files/table_name/csv';

把文件下载下来

因为是在对方堡垒机连接的服务器,所以没法直接使用sftp服务连接,好在机器能访问公网,手上刚好有一个树莓派,将树莓派的sftp服务使用natter打洞暴露在公网,使用sftp传过去

image-20250326171401746

最后,再使用sftp工具下载到自己的电脑上即可。

最后在使用Excel打开之前,先将文件中的所有制表符改为,,因为MySQL导出的文件默认制表符分隔,直接打开如果有带有空格的数据也会被分开,所以使用逗号分隔是最保险的

image-20250326171505062