MySQL 5.7 のデータをCSVファイルなどに保存したいときに「The MySQL server is running with the --secure-file-priv option so it cannot execute this statement」と出てファイル保存できない場合の対処法
(Windows環境を例に説明します)
テーブル内容をファイルに書き出す
testテーブルの内容を c:/temp/test.txt に保存しようとすると、
mysql> SELECT * FROM test INTO OUTFILE 'c:/temp/test.txt';
以下のようなメッセージが出て、ファイル出力に失敗したときの対処法
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
my.iniを開いて、secure-file-priv を無効にする
my.iniはデフォルトのインストール状態だと
C:\ProgramData\MySQL\MySQL Server 5.7にある。
以下のようにmy.iniを編集して**secure-file-priv=""**にする
MySQLを再起動する
まず、前提としてMySQL 5.7がWindowsサービスとして起動している環境を想定
1.管理者権限でコマンドプロンプトを起動する
2.MySQL 5.7のbinフォルダに移動する
cd "C:\Program Files\MySQL\MySQL Server 5.7\bin"
3.MySQL 5.7をshutdownする
(rootのパスワードは仮に"password"とする)
mysqladmin -u root shutdown -ppassword
これにより、MySQLサービスも STOPPED ステートになる
4.MySQL 5.7を起動する
MySQLサービスを起動する
NET START MYSQL57
テーブル内容をファイルに書き出す(リトライ)
mysql> SELECT * FROM exchange INTO OUTFILE 'c:/temp/test.txt';
Query OK, 86 rows affected (0.00 sec)
今度は無事成功!