I am experiencing some permission problems with my SELECT ... INTO OUTFILE
statement.
When I log into my database and do a simple export command, eg:
mysql> select * from XYZ into outfile '/home/mropa/Photos/Desktop/TEST.txt';
I get the respond:
ERROR 1 (HY000):
Can't create/write to file '/home/mropa/Photos/Desktop/TEST.txt'
(Errcode: 13)
However, when I simply write:
mysql> select * from XYZ into outfile 'TEST.txt';
Query OK, 8287 rows affected (0.73 sec)
The file is written into the directory /var/lib/mysql/XYZ
.
I looked into the file /etc/apparmor.d/usr.sbin.mysqld
where mysql seems to define the reading and writting permissions but I don't really know how to modify it.
How can I give myself permission to export a mysql table into any directory I like?
The issue is directory permissions. mysqld does not run as current_user. Add the mysqld user to the group that has write permissions on your target directories (convenient, but not as secure) or remember to change your target directory permissions before and after you write the outfile.
you can create a directory that is writable by the user that is running mysqld (usually "mysql") and write the file there. For intance:
chmod a+w /home/mropa/mysql
This sounds like you don't have access to that particular folder. You should add mysql to the group owner of that particular location.
I don't know under what user you are running mysql under, however,
chown mysql:mysql on /home/mropa/Photos/Desktop/logs would mean that mysql user and mysql group is the owner so has permission. You then need to make sure that the permissions include writing but that should be sufficient.
Chown Command
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With