使用场景
将数据路中的数据导出到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
导出数据,查看与数据库内容是否一致