Résolution de l'erreur MySQL "Commande non autorisée" Lors du chargement des données
Rencontrer l'erreur MySQL "Erreur 1148: La commande utilisée n'est pas autorisée avec cette version MySQL" tandis que l'utilisation de LOAD DATA LOCAL
signifie que le mot-clé LOCAL
est désactivé. Il s'agit d'une mesure de sécurité. Pour charger les données localement, vous devez activer explicitement l'option local-infile
.
Solution côté client:
La solution la plus simple consiste à activer local-infile
lors de la connexion à votre serveur MySQL:
<code class="language-bash">mysql -u myuser -p --local-infile mydatabase</code>
Remplacez myuser
par votre nom d'utilisateur MySQL, -p
invite votre mot de passe, et mydatabase
par le nom de votre base de données.
Remarque de sécurité importante: Activation local-infile
introduit une vulnérabilité de sécurité. Ne l'activez que lorsque vous êtes absolument nécessaire et désactivez-le par la suite.
Solution côté serveur (plus permanente, mais nécessite la prudence):
Pour une solution plus permanente, activez local-infile
sur le serveur MySQL lui-même. Cela nécessite de modifier le fichier de configuration MySQL (my.cnf
sur Linux / MacOS, my.ini
sur Windows). Exercer une prudence extrême lors de la modification des fichiers de configuration du serveur. Les modifications incorrectes peuvent compromettre la sécurité de votre serveur.
Ajouter ou modifier la ligne suivante dans votre fichier my.cnf
:
<code>loose-local-infile = 1</code>
Ensuite, redémarrez votre serveur MySQL pour que les modifications prennent effet. Une fois le chargement de données terminé, il est fortement recommandé de remettre loose-local-infile
à 0 ou de supprimer la ligne pour atténuer le risque de sécurité.
Approche alternative (recommandée):
La méthode la plus sûre et généralement préférée est d'éviter complètement LOAD DATA LOCAL
. Au lieu de cela, utilisez une méthode qui n'implique pas de chargement de données directement à partir du système de fichiers local du client. Cela pourrait impliquer:
mysqlimport
: Cet outil de ligne de commande est une alternative plus sûre pour importer des données à partir d'un fichier. scp
, sftp
ou d'autres méthodes de transfert de fichiers sécurisées, puis utilisez LOAD DATA INFILE
(sans le LOCAL
mot-clé) pour charger les données du système de fichiers du serveur. N'oubliez pas de toujours hiérarchiser la sécurité lorsque vous travaillez avec des bases de données. L'activation de local-infile
devrait être une mesure temporaire, et les approches alternatives sont généralement plus sûres et recommandées pour le chargement des données à long terme.
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!