(MySQL) INTO OUTFILE で csv 出力しようとすると The MySQL server is running with the –secure-file-priv option so it cannot execute this statement エラー

経緯

MySQL で

SELECT * FROM hoge AS h LEFT JOIN fuga AS f ON h.id = f.id INTO OUTFILE '/tmp/dump.sql' FIELDS TERMINATED BY ',';

のようにSQLクエリの結果を csv 出力しようとしたところ、

ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement

のエラーが発生したので対処。

対処

対処法としては、 MySQL の設定に1行追記をして MySQL を再起動する、というもの。

ただし、これは MySQL のデータを保護する(データを無暗にファイルとしてエクスポートできないようにする)ためのものなので、ローカル環境等の開発環境ならば良いですが、本番環境などでは設定しない方が良いでしょう。

# vi /etc/my.cnf


[mysqld]

## 略

secure-file-priv = ""  # 追記

secure-file-priv を空欄にすることでどこでもファイル出力できるようにします。

そこで secure-file-priv = "" の一行を追記して、 MySQL のプロセスを再起動します。

今回はこれでOK。

参考

csv 出力

secure-file-priv

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。