使用场景
将数据路中的数据导出到excel表格中,用于恢复备份时核对数据库数据的准确性
一、操作流程
[root@server3 ~]# mysql #进入mysql
mysql> create database user; #创建userku
Query OK, 1 row affected (0.01 sec)
mysql> use user #进入user库
Database changed
mysql> create table stu(name varchar(48) not null,score int(16) not null);
Query OK, 0 rows affected (0.01 sec) #创建表stu
mysql> insert into stu values('qiqi',80),('lili',90),('sisi',85)
-> ; #插入数据
mysql> select * from stu
-> ;
+------+-------+
| name | score |
+------+-------+
| qiqi | 80 |
| lili | 90 |
| sisi | 85 |
+------+-------+
3 rows in set (0.00 sec)
在/目录下创建一个目录为test,并修改配置文件
[root@server3 ~]# mkdir /test
[root@server3 ~]# vi /etc/my.cnf
secure-file-priv = "" #添加一行,可以指定路径,如果为空可以导入任何有权限的路径
systemctl restart mysqld #重启服务
若没加此行会出现如下报错
MYSQL导入数据出现ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement,
查看 secure_file_priv 的值,默认为NULL,表示限制不能导入导出。
查看官方文档,secure_file_priv参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录。
- secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
- secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
- secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。
修改test目录权限
[root@server3 ~]# chmod 777 /test
[root@server3 ~]# cd /
[root@server3 /]# ll
drwxrwxrwx. 2 root root 6 11月 29 22:14 test
导出数据
mysql> select * from stu into outfile '/test/user.xls';
Query OK, 3 rows affected (0.00 sec)
进入/test查看文件是否生成
[root@server3 ~]# cd /test
[root@server3 test]# ll
总用量 4
-rw-rw-rw-. 1 mysql mysql 24 11月 29 22:30 user.xls
导出数据,查看与数据库内容是否一致