问题:想把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请问我该怎么设置才正确?
调用语句
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: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)” 错误 ! 希望对你有帮助 。导致原因是因为权限问题,修改起来比较麻烦 !
在 mysql 中能够读写的文件只能在这个设置的目录中