MySQL 3.23.49 および MySQL 4.0.2(Windows では
        4.0.13)で、LOAD DATA LOCAL
        に関するセキュリティ対策としていくつかの新しいオプションが追加されました。
      
このコマンドには次のような潜在的な問題が 2 つあります。
ファイルの読み取りがサーバ側から開始されるため、理論的には、改悪した MySQL サーバを作成しておけば、クライアントがテーブルに対してクエリを実行した時に、そのクライアントコンピュータ上に存在する全てのファイル(カレントユーザが読み取り権を持つ)を、改悪した MySQL サーバが読み取れるということになります。
        クライアントが Web サーバから接続する Web
        環境では、ユーザは LOAD DATA LOCAL
        を使用して、Web
        サーバプロセスが読み取りアクセス権を持つどのファイルでも読み取ることができます(ユーザが
        SQL
        サーバに対してすべてのコマンドを実行できる場合)。
      
これには 2 つの解決方法があります。
        MySQL を --enable-local-infile
        でコンフィギャしていなければ、mysql_options(...
        MYSQL_OPT_LOCAL_INFILE, 0)
        を呼び出さないクライアントは LOAD DATA
        LOCAL を使用できません。 See
        項11.1.3.40. 「mysql_options()」。
      
        mysql
        コマンドラインクライアントに対しては、--local-infile[=1]
        オプションで LOAD DATA LOCAL
        を有効にでき、--local-infile=0
        オプションで無効にできます。
      
        デフォルトでは、すべての MySQL
        クライアントとライブラリが
        --enable-local-infile
        でコンパイルされ、MySQL 3.23.48
        以前との互換性が保たれるようになっています。
      
        MySQL サーバですべての LOAD DATA
        LOCAL
        コマンドを無効にするには、mysqld
        を --local-infile=0 で開始します。
      
        LOAD DATA LOCAL INFILE
        がサーバまたはクライアントで無効になっている場合、次のエラーメッセージ(1148)が表示されます。
      
The used command is not allowed with this MySQL version
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

