使用場景
將數據路中的數據導出到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
導出數據,查看與數據庫內容是否一致