40
20

More than 5 years have passed since last update.

MySQLでCSV出力しようとしたら --secure-file-priv option のエラーになった

Posted at

エラー内容

下記コマンドでCSVファイルを出力しようとした。

SELECT *
  FROM table
  INTO OUTFILE '/tmp/file.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
;

そうしたら次のエラー内容が出力された。

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

secure-file-priv optionという、データの入出力を制限するオプションのエラー。

解決策 (Mac OS X)

取りあえずどういう設定がされているのかを確認。

mysql> SELECT @@global.secure_file_priv;

+---------------------------+
| @@global.secure_file_priv |
+---------------------------+
| NULL                      |
+---------------------------+

ここがNULLのせいのよう。
この設定をmy.cnfで調整する。

my.cnfが読み込まれる場所を確認

$ mysql --help | grep my.cnf

order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

/usr/local/etc/my.cnf に設定ファイルを置くことにする。

Homebrewで入れたMySQLのmy-xxx.cnfの場所を確認

$ find /usr/local/Cellar/mysql -name "my*.cnf"

/usr/local/Cellar/mysql/5.7.17/support-files/my-default.cnf

設定ファイルをコピー

$ cp /usr/local/Cellar/mysql/5.7.17/support-files/my-default.cnf /usr/local/etc/my.cnf

設定を変更する

/usr/local/etc/my.cnf に下記設定を追加する。

[mysqld]
secure-file-priv = ""

これでCSV出力をしてもエラーが出なくなった。

参考

40
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
20