mysql OUTFILE 导出到smb目录

   有些公司会要求技术人员吧数据存到excel中并放到 共享,领导会查看。

往往一些数据报表需求每天是一致的,这时候如果技术人员每天手动出重复数据,再放到共享中,就有些麻烦了,成为了重复劳动。做技术的吗~就要有偷懒精神。

  这次利用smb + mysql crontab  outfile 来完成这次偷懒

 

配置smb 的方法不说了,大家都是做好的,主要说 event  outfile

smb的目录为 /home/xht

这个时候把数据直接输出到/home/xht

 

mysql> use a;
Database changed
mysql> select * from b;
+---------------------+
| c                   |
+---------------------+
| 2012-12-14 09:14:11 |
| 2012-12-14 09:14:14 |
| 2012-12-14 09:14:15 |
| 2012-12-14 09:14:16 |
| 2012-12-14 09:14:16 |
+---------------------+
5 rows in set (0.00 sec)

以上有数据,接下来准备输出到共享目录
mysql> select * from b into OUTFILE '/home/xht/D.txt';
ERROR 1 (HY000): Can't create/write to file '/home/xht/D.txt' (Errcode: 13)

报错:通过 Can't create/write可以推测到,应该是权限问题。

咱们查看一下目录权限

[root@db241 home]# ls -al /home/ | grep xht
drwx------   5 xht    xht    4096 12月 14 09:38 xht

 

发现xht这个文件夹只有用户读写执行的权限 ,当然不能创建新的文件夹了

这个时候需要文件夹一个其他用户写权限,

[root@db241 home]# chmod 707 /home/xht/
[root@db241 home]# ls -al /home/ | grep xht
drwx---rwx   5 xht    xht    4096 12月 14 09:38 xht

这时候再尝试导入下

mysql> select * from b into OUTFILE '/home/xht/D.txt';
Query OK, 5 rows affected (0.00 sec)

成功!

[root@db241 home]# cd /home/xht/
[root@db241 xht]# ls
a  ab  b  D.txt  is
[root@db241 xht]# cat D.txt
2012-12-14 09:14:11
2012-12-14 09:14:14
2012-12-14 09:14:15
2012-12-14 09:14:16
2012-12-14 09:14:16

没问题~ok

咱们作为技术人员除了偷懒外还要考虑安全是吧。

通过这种授权固然可以解决,但是其他用户也可以对这个目录进行操作了,这样linux目录很不安全。

这时候通过另外一种方法解决。增加组

咱们写把目录改回之前的700状态。

chmod 700 xht/

mysql> select * from b into OUTFILE '/home/xht/D.txt';
ERROR 1 (HY000): Can't create/write to file '/home/xht/D.txt' (Errcode: 13)

这时候已经无法写入

1、groupadd data_query

2、usermod -G data_query mysql --给mysql用户追加data_query组

3、mkdir /home/xht/data_query

 

4、chown mysql.data_query /home/xht/data_query --赋予mysql用户data_query组

5、chmod 770 data_query/ --用户与组可以读写执行

 

6、chmod 750 /home/xht/ --用于狱卒可以读写执行

[root@db241 xht]# ls -al | grep data_
drwxr-x---  6 xht   data_query 4096 12月 14 10:02 .
drwxrwx---  2 mysql data_query 4096 12月 14 10:02 data_query

 

--再尝试执行

mysql> select * from b into OUTFILE '/home/xht/data_query/Dccd.txt';
Query OK, 5 rows affected (0.00 sec)

OK~!

 

登陆smb看看去

 

 

 

 

数据已存在。

下一步就是定时完成了。

方法有很多~

1、脚本方法

2、通过linux crontab 完成

2、通过mysql 的定时任务

 

这里抛砖引玉 就用个crontab的方法吧

 

脚本如下

 

已经存在

 

crontab -e

每天10点29执行~

 

好了 ~就到这了。。。

 

 

 

你可能感兴趣的:(mysql,crontab,outfile)