linux ubuntu mysql into outfileがERROR 1 (HY000): Can’t create/write to file ‘/home/ssff.txt’ (OS errno 13 – Permission denied)となる場合の解決方法
■発生問題
select * from table_name into outfile ‘/home/test.csv’に適当なテーブル内容を吐き出そうと思ったら
ERROR 1 (HY000): Can’t create/write to file ‘/home/ssff.txt’ (OS errno 13 – Permission denied)
上記エラーにより吐き出せなかった
パーミッションは775であり、問題ないので原因がよくわからずにつまづいた
■原因
エラー概要からは権限がないと言われている
mysqlログインアカウント権限にも、FILE権限はつけており、一通りのパーミッションは解決しているのが何故エラーが起きるのかは詳細は不明
もちろんsecure-file_privも=’’と空白にしている為、まずmysqlのセキュリティが邪魔をしている訳でもないと思われる
mysql-serverという所有者とmysqlというグループが作成されており、それらが関与されている可能性がある
■解決策
mysqlのoutfileできる場所は元々決まっているようであった
var/lib/mysql-file
上記以下にoutfile ‘/var/lib/mysql-files/test.csv’をすれば問題なく吐き出せる
排出については問題はないが、アクセスに問題があり、mysql-fileの所有者はmysql-server、権限グループはmysqlとなっており、パーミッションを変更しないと中身が見れない
fileを覗いてnullだった場合は読み取りパーミッションを変更する必要があるので注意
多分だが、グループと所有者、my.cnfを操作することでどこにでも吐き出せるように設定できるはず
以上、mysql select into outfileのパーミッションエラー解決方法