在MySQL中创建/写入权限

mro*_*opa 6 mysql sql database linux

我的SELECT ... INTO OUTFILE声明中遇到了一些许可问题.

当我登录我的数据库并执行简单的导出命令时,例如:

mysql> select * from XYZ into outfile '/home/mropa/Photos/Desktop/TEST.txt';
Run Code Online (Sandbox Code Playgroud)

我得到了回应:

ERROR 1 (HY000): 
Can't create/write to file '/home/mropa/Photos/Desktop/TEST.txt' 
(Errcode: 13)
Run Code Online (Sandbox Code Playgroud)

但是,当我简单地写:

mysql> select * from XYZ into outfile 'TEST.txt';
Query OK, 8287 rows affected (0.73 sec)
Run Code Online (Sandbox Code Playgroud)

该文件将写入目录/var/lib/mysql/XYZ.我查看了/etc/apparmor.d/usr.sbin.mysqldmysql似乎定义了读取和写入权限的文件,但我真的不知道如何修改它.

如何允许自己将mysql表导出到我喜欢的任何目录中?

dna*_*irl 6

问题是目录权限.mysqld不以current_user身份运行.将mysqld用户添加到对目标目录具有写权限的组(方便但不安全),或者记住在编写outfile之前和之后更改目标目录权限.