问题:想把MySQL的数据导出到一个自定义的文件目录下,而不是在数据库目录下
调用语句
mysql> SELECT * FROM student INTO OUTFILE '/home/lucien/mysql_data/student.txt';
结果报错:
ERROR 1 (HY000): Can't create/write to file '/home/lucien/mysql_data/student.txt' (Errcode: 13)
而我将数据导出到数据库目录下(/var/lib/mysql/test/)是正常的
mysql> SELECT * FROM student INTO OUTFILE 'student.txt';我的目标目录已经设置了mysql用户和组,并且已经将权限设置为777了,如下所示:
lucien@lucien-H61M-DS2:~$ ll mysql_data/
总用量 16
drwxrwxrwx  2 mysql  mysql   4096  8月 14 21:40 ./
drwx------ 48 lucien lucien 12288  8月 14 21:42 ../并且根据网上介绍说,我已经将/etc/apparmor.d/usr.sbin.mysqld文件中添加了/usr/sbin/mysqld {
   .........
  /run/mysqld/mysqld.sock w,  /sys/devices/system/cpu/ r,  /home/lucien/mysql_data/** rw,
  /home/lucien/mysql_data/* rw,
  /home/lucien/mysql_data/ rw,}
然后重新载入:
sudo /etc/init.d/apparmor reload/restart
重新启动了服务器
sudo /etc/init.d/mysql restart请问我该怎么设置才正确?

解决方案 »

  1.   

    无法使用这个命令在本地(非MYSQL服务器)计算机上创建文件。如果想通过脚本在本地生成文件,则一般是直接使用 mysql 行命令工具。比如c:\xx\cc\mysql5.5\bin\mysql.exe -uadmin -p123 db1 -e "select * form tabl1" > xxx.csv
      

  2.   

    我是在MYSQL服务器端上运行的这个命令
      

  3.   

    亲 如果使用 select  ... into  outfile ...方式导出数据,需要分为两种情况 :
    1:windows系统下:可以随意指定对应的目录 。
    2. linux 系统下 :
    (1)不指定目录 ,默认在当前导出数据库数据目录下 ,例如  /var/lib/mysql/db_name 
    (2) 指定目录时,默认只能指定 /tmp目录 。否则回报 “ ERROR 1 (HY000) at line 1: Can't create/write to file '/xxxx/xxxx/xxx.csv' (Errcode: 13)” 错误 ! 希望对你有帮助 。导致原因是因为权限问题,修改起来比较麻烦 !
      

  4.   

    可以放到/tmp/目录下,然后cp到其它你想存放的目录。
      

  5.   

    三楼的怎么做的,我的导入到temp里面也不行
      

  6.   

    查下 select @@secure_file_priv ;
    在 mysql 中能够读写的文件只能在这个设置的目录中