MySQL の 'SELECT * INTO OUTFILE' コマンドは、かつて使用されていました。簡単なデータ抽出は、セキュリティ上の理由から制限されています。ただし、「LOAD DATA LOCAL INFILE」コマンドは引き続き機能するため、ユーザーは、対応する「SELECT INTO OUTFILE LOCAL」オプションがなぜ利用できないのか疑問に思っています。
「LOAD DATA LOCAL INFILE」はなぜ機能するのですか?
「LOAD DATA LOCAL INFILE」を使用すると、MySQL をホストしているサーバー上のローカル ファイルからデータをインポートできます。その機能はサーバーにのみ限定されており、セキュリティ上の懸念が排除されているため、引き続き利用可能です。
Why Not 'SELECT INTO OUTFILE LOCAL'?
'SELECT INTO OUTFILE' は、サーバー自体上のテキスト ファイルにデータをエクスポートすることを目的としています。ただし、このファイルがリモート宛先を対象としている場合は、セキュリティ対策によりこのアクションは阻止されます。サーバー内で動作する「LOAD DATA INFILE」とは異なり、「SELECT INTO OUTFILE」ではサーバーからデータが抽出され、外部の場所に転送される可能性があり、セキュリティ上の脆弱性が生じます。
代替アプローチ
このセキュリティ リスクを軽減するには、元の質問で示されている例に示すように、「mysql」コマンドライン ツールを使用できます。 「>」を使用して「SELECT」クエリの出力をファイルにリダイレクトすることで、サーバーのセキュリティを損なうことなく、データをローカルまたはリモートの宛先に効果的に転送できます。
MariaDB の機能 MySQL のフォークである
MariaDB も、同様のセキュリティ上の懸念により、「SELECT INTO OUTFILE」コマンドを制限しています。ただし、「LOAD DATA LOCAL INFILE」コマンドをサポートしているため、ローカル サーバー ファイルからのデータのインポートが可能です。
以上がMySQL で「SELECT * INTO OUTFILE LOCAL」が無効になっているのに、「LOAD DATA LOCAL INFILE」は引き続き使用できるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。