我的SELECT ... INTO OUTFILE陈述书遇到一些权限问题。
SELECT ... INTO OUTFILE
当我登录数据库并执行简单的导出命令时,例如:
mysql> select * from XYZ into outfile '/home/mropa/Photos/Desktop/TEST.txt';
我得到回应:
ERROR 1 (HY000): Can't create/write to file '/home/mropa/Photos/Desktop/TEST.txt' (Errcode: 13)
但是,当我简单地写:
mysql> select * from XYZ into outfile 'TEST.txt'; Query OK, 8287 rows affected (0.73 sec)
该文件被写入目录/var/lib/mysql/XYZ。我查看了/etc/apparmor.d/usr.sbin.mysqldmysql似乎定义读取和写入权限的文件,但我真的不知道如何修改它。
/var/lib/mysql/XYZ
/etc/apparmor.d/usr.sbin.mysqld
如何授予自己将mysql表导出到我喜欢的任何目录的权限?
问题是目录权限。mysqld不以current_user身份运行。将mysqld用户添加到对目标目录具有写权限的组(方便但不安全),或记住在写入输出文件之前和之后更改目标目录的权限。