MySQLで--secure-file-priv関連のエラーが発生した件
|
下記のようなSQL文でcsvファイルの出力を試みました。
SELECT * FROM hogehoge
INTO OUTFILE '/temp.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';
すると下記のようなエラーが発生しました。
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
--secure-file-priv
というオプションをつけてMySQLサーバーを起動しろということですが、DBの再起動はしたくなかったので、どうにかならないかと思い、調べました。
ソリューション①
下記クエリで secure_file_priv
の値を確認したところ、 /var/lib/mysql-files/
が指定されていました。
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.00 sec)
CSVファイル出力する際、この値を出力先として指定することで、問題なくクエリを実行することができました。
ソリューション②
下記のように secure_file_priv
を空にすることで、どの場所にもファイルを出力することができるようです。
[mysqld]
secure-file-priv = ""
設定を変更したら sudo systemctl restart mysqld
でMySQLを再起動します。
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | |
+------------------+-------+
まとめ
SHOW VARIABLES LIKE "secure_file_priv";
で設定されている場所を指定すればクエリを実行できます。
再起動が許されるのであれば、コンフィグファイルで secure-file-priv = ""
としても良いです。