ホームページ  >  記事  >  データベース  >  MySQL で「SELECT * INTO OUTFILE LOCAL」が無効になっているのに、「LOAD DATA LOCAL INFILE」は引き続き使用できるのはなぜですか?

MySQL で「SELECT * INTO OUTFILE LOCAL」が無効になっているのに、「LOAD DATA LOCAL INFILE」は引き続き使用できるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-26 13:57:30773ブラウズ

Why is 'SELECT * INTO OUTFILE LOCAL' Disabled in MySQL but 'LOAD DATA LOCAL INFILE' Remains Available?

MySQL のセキュリティとファイル転送: 'SELECT * INTO OUTFILE LOCAL' を使用できないのはなぜですか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。