Maison >base de données >tutoriel mysql >Pourquoi \'SELECT * INTO OUTFILE LOCAL\' est-il désactivé dans MySQL mais \'LOAD DATA LOCAL INFILE\' reste disponible ?

Pourquoi \'SELECT * INTO OUTFILE LOCAL\' est-il désactivé dans MySQL mais \'LOAD DATA LOCAL INFILE\' reste disponible ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 13:57:30883parcourir

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

Sécurité MySQL et transfert de fichiers : pourquoi ne puis-je pas utiliser « SELECT * INTO OUTFILE LOCAL » ?

La commande « SELECT * INTO OUTFILE » de MySQL, autrefois utilisée pour l'extraction simple de données, est devenue restreinte pour des raisons de sécurité. Cependant, la commande 'LOAD DATA LOCAL INFILE' reste fonctionnelle, laissant les utilisateurs se demander pourquoi l'option 'SELECT INTO OUTFILE LOCAL' correspondante n'est pas disponible.

Pourquoi 'LOAD DATA LOCAL INFILE' fonctionne-t-il ?

'LOAD DATA LOCAL INFILE' permet d'importer des données depuis un fichier local sur le serveur hébergeant MySQL. Sa fonctionnalité est uniquement confinée au serveur, éliminant ainsi les problèmes de sécurité, c'est pourquoi elle reste disponible.

Pourquoi ne pas « SELECT INTO OUTFILE LOCAL » ?

« SELECT INTO OUTFILE' a l'intention d'exporter les données dans un fichier texte sur le serveur lui-même. Toutefois, si ce fichier est destiné à une destination distante, des mesures de sécurité empêchent cette action. Contrairement à « LOAD DATA INFILE », qui fonctionne au sein du serveur, « SELECT INTO OUTFILE » pourrait potentiellement permettre aux données d'être extraites du serveur et transférées vers un emplacement externe, créant ainsi une faille de sécurité.

Alternative Approches

Pour atténuer ce risque de sécurité, vous pouvez utiliser l'outil de ligne de commande « mysql », comme indiqué dans l'exemple fourni dans la question d'origine. En redirigeant la sortie d'une requête « SELECT » vers un fichier à l'aide de « > », vous pouvez transférer efficacement des données vers une destination locale ou distante, sans compromettre la sécurité du serveur.

Fonctionnalité MariaDB

MariaDB, un fork de MySQL, restreint également la commande 'SELECT INTO OUTFILE' en raison de problèmes de sécurité similaires. Cependant, il prend en charge la commande 'LOAD DATA LOCAL INFILE', permettant l'importation de données à partir de fichiers du serveur local.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn