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 = ""としても良いです。

コメントを残す

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.