DB 開発

[MySQL] Error Code: 1290 secure-file-priv の対処法

[MySQL] Error Code: 1290. The MySQL server is running with the --secure-file-priv の対処法

Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

MySQLのテーブルにデータを入れようとすると Error Code: 1290 が発生する場合がある。
新しく用意されたDBに触る際によく起こるエラーなので、今回はこのエラーについて解説する。


Error Code: 1290 とは?

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

直訳するなら以下のようになる。

MySQLサーバーは--secure-file-privのオプションで動いているのでこの命令は実行できません

つまり --secure-file-priv が何かわかれば解決できる。


では--secure-file-privとは?

MySQLの公式サイトには以下のように書かれている。

このオプションは、LOAD_FILE() 関数と LOAD DATA および SELECT ... INTO OUTFILE ステートメントの効果を制限し、指定されたディレクトリ内のファイルにのみ作用します。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.1.3 サーバーコマンドオプション

ファイルを扱うSQLを指定されたディレクトリ(フォルダ)の中でしか動かないようにする為の制限、ということになる。


エラーを回避するには

オプションによってSQLが制限されているのであれば、回避する方法は2つ。

  • オプションの制限に従うようにSQLを実行する
  • オプションをオフにする


[方法1] オプションの制限に従うようにSQLを実行する

オプションの制限に従うようにSQLを実行するには指定されたディレクトリを知る必要がある。
secure_file_priv で指定されているディレクトリは以下のSQLで確認できる。

SELECT @@global.secure_file_priv;

しかしこの後、以下を試してみたがうまくデータを取り込めなかった。

  • ディレクトリにcsvファイルを置いて LOAD DATA INFILE を実行
  • LOAD DATA INFILE で指定するcsvファイルとしてディレクトリ付きのフルパス指定

従ってこの方法については実行方法を模索中である。


[方法2] オプションをオフにする

--secure-file-priv のオプションを無効化してしまおうというもの。
こちらの手段は検索した際によく出てきた。

オプションの無効化方法は設定ファイルを書き換えて再起動となる。
設定ファイルの場所はMySQLのインストール場所によりけりだが、大体以下の通り。

Windows

C:\ProgramData\MySQL\(MySQLのバージョン)\my.ini

Linux(左から順に読み込んで最後の内容で上書きされる)

/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

参考
* 【Windows】MySQL Server5.7 のmy.cnfファイルの場所 - Qiita
* my.cnfの場所を調べる - Qiita

ファイルが見つかれば中身を見て secure-file-priv の値を空白 "" で設定して再起動すれば終了。
secure-file-priv = ""


まとめ

  • Error Code: 1290 はMySQLにディレクトリの読み書きの制限がかかっているので発生する
  • 回避方法は my.ini または my.cnfsecure-file-priv = "" を設定する


ITipsと同じようなブログを作る方法

ブログに興味がありますか?

もしブログに興味がある場合は↓このページ↓を参考にすれば、ITipsと同じ構成でブログを作ることができます

サーバー、ドメイン、ASPと【ブログに必要なものは全て】このページに書きました。
同じ構成でブログ作るのはいいけど、記事はマネしないでネ (TДT;)

ランキング参加中

にほんブログ村 IT技術ブログへ

他にもブログやSNSで紹介してくれると励みになります。

はてブのコメントで酷評されると泣きます(´;ω;`)

-DB, 開発
-,

© 2024 ITips