La commande LOAD DATA
peut lire des données
sur le serveur hôte, ou bien charger un fichier sur le client,
avec l'option LOCAL
.
Il existe deux problèmes particuliers pour le support de cette commande :
Comme la lecture du fichier est réalisée depuis le serveur, il est possible théoriquement de créer un serveur MySQL modifié qui pourrait lire n'importe quel fichier de la machine cliente, qui serait accessible à l'utilisateur.
Dans un environnement web, où les clients se connectent
depuis un serveur web, un utilisateur peut se servir de la
commande LOAD DATA LOCAL
pour lire les
fichiers qui sont sur le serveur web, et auquel ce dernier a
accès (en supposant qu'un utilisateur peut exécuter
n'importe quelle commande sur le serveur).
Pour traiter ces problèmes, nous avons changé la gestion des
commandes LOAD DATA LOCAL
depuis MySQL
version 3.23.49 et MySQL version 4.0.2 (4.0.13 pour Windows) :
Par défaut, tous les clients MySQL et les bibliothèques
des distributions binaires sont compilées avec l'option
--enable-local-infile
, pour être
compatible avec MySQL 3.23.48 et plus ancien.
Si vous ne configurez pas MySQL avec l'option
--enable-local-infile
, alors LOAD
DATA LOCAL
sera désactivé par tous les clients,
à moins que l'option mysql_options(...
MYSQL_OPT_LOCAL_INFILE, 0)
soit activée dans le
client. See Section 24.2.3.43, « mysql_options()
».
Pour le client en ligne de commande
mysql
, LOAD DATA LOCAL
peut être activé en spécifiant l'option
--local-infile[=1]
, ou désactivé avec
--local-infile=0
.
Vous pouvez désactiver toutes les commandes LOAD
DATA LOCAL
du serveur MySQL en démarrant
mysqld
avec
--local-infile=0
. Similairement, pour
mysqlimport
, les options
--local
et -L
active le
chargement distant de fichiers. Dans ce cas, il faut que le
serveur accepte aussi cette configuration pour que
l'opération fonctionne.
Au cas où LOAD DATA LOCAL INFILE
est
désactivé sur le serveur ou le client, vous obtiendrez le
message d'erreur (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.