Maison > base de données > tutoriel mysql > Comment corriger l'erreur 'Commande non autorisée avec la version MySQL' lors de l'utilisation de données de charge locale?

Comment corriger l'erreur 'Commande non autorisée avec la version MySQL' lors de l'utilisation de données de charge locale?

DDD
Libérer: 2025-01-24 09:46:09
original
661 Les gens l'ont consulté

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.

How to Fix the

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>
Copier après la connexion

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>
Copier après la connexion

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:

  • Utilisation de mysqlimport: Cet outil de ligne de commande est une alternative plus sûre pour importer des données à partir d'un fichier.
  • Transférer le fichier vers le serveur d'abord: Téléchargez le fichier de données sur le serveur à l'aide de 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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal