我在使用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.mysqld
,mysql似乎定义了读写权限,但我不知道如何修改它。如何让自己有权限将MySQL表导出到任何喜欢的目录中?
mysql -u mropa -p
启动 MySQL,这样用户就是 'mropa',应该具有写入权限。你能详细解释一下你的答案吗?我不是完全理解。谢谢。 - mropamysql -u mropa -p
时,你并没有启动 mysqld 进程,你只是登录了进去。当你写入 outfile 时,写入的不是你的登录用户,而是 mysqld 进程。想象一下,你以 mropa 的身份登录到 shell 中,然后以 mydb_user 的身份登录到 mysql 中。当你从 mysql 写入 outfile 时,既不是 mropa 也不是 mydb_user 在进行写入,而是 mysqld 进程的所有者在进行写入。 - dnagirl