Comment dois-je aborder –secure-file-priv dans MySQL?

J’apprends MySQL et j’ai essayé d’utiliser une clause LOAD DATA . Quand je l’ai utilisé comme ci-dessous:

 LOAD DATA INFILE "text.txt" INTO table mytable; 

J’ai eu l’erreur suivante:

Le serveur MySQL s’exécute avec l’option –secure-file-priv afin qu’il ne puisse pas exécuter cette instruction

Comment puis-je résoudre cette erreur?

J’ai vérifié une autre question sur le même message d’erreur , mais je n’arrive toujours pas à trouver une solution.

J’utilise MySQL 5.6

Cela fonctionne comme prévu. Votre serveur MySQL a été lancé avec l’option –secure-file-priv , qui limite essentiellement les répertoires dans lesquels vous pouvez charger des fichiers en utilisant LOAD DATA INFILE .

Vous pouvez utiliser SHOW VARIABLES LIKE "secure_file_priv"; pour voir le répertoire qui a été configuré.

Vous avez deux options:

  1. Déplacez votre fichier dans le répertoire spécifié par secure-file-priv .
  2. Désactiver secure-file-priv Cela doit être supprimé du démarrage et ne peut pas être modifié dynamicment. Pour ce faire, vérifiez vos parameters de démarrage MySQL (en fonction de la plate-forme) et my.ini.

J’ai eu le même problème. J’ai finalement résolu en utilisant l’option LOCAL dans la commande

LOAD DATA LOCAL INFILE "text.txt" INTO TABLE mytable;

Vous pouvez trouver plus d’informations ici http://dev.mysql.com/doc/refman/5.7/en/load-data.html

Si LOCAL est spécifié, le fichier est lu par le programme client sur l’hôte client et envoyé au serveur. Le fichier peut être indiqué sous la forme d’un chemin d’access complet pour spécifier son emplacement exact. S’il est donné sous la forme d’un nom de chemin relatif, le nom est interprété par rapport au répertoire dans lequel le programme client a été démarré.

Sur Ubuntu 14 et Mysql 5.5.53, ce paramètre semble être activé par défaut. Pour le désactiver, vous devez append secure-file-priv = "" à votre fichier my.cnf sous le groupe mysqld config. par exemple:-

 [mysqld] secure-file-priv = "" 

Je travaille sur MySQL 5.7.11 sur Debian, la commande qui a fonctionné pour moi pour voir le répertoire est la suivante:

mysql> SELECT @@ global.secure_file_priv;

Voici ce qui a fonctionné pour moi dans Windows 7 pour désactiver secure-file-priv (Option # 2 de la réponse de vhu ):

  1. Arrêtez le service de serveur MySQL en allant dans services.msc .
  2. Allez dans C:\ProgramData\MySQL\MySQL Server 5.6 ( ProgramData était un dossier caché dans mon cas).
  3. Ouvrez le fichier my.ini dans le Bloc-notes.
  4. Recherchez ‘secure-file-priv’.
  5. Commentez la ligne en ajoutant «#» au début de la ligne.
  6. Enregistrez le fichier.
  7. Démarrez le service serveur MySQL en allant dans services.msc .

Pour le serveur MySQL 5.7.16 et supérieur, reportez-vous au commentaire de dbc ci-dessous.

Si le fichier est local sur votre machine, utilisez le LOCAL dans votre commande

 LOAD DATA LOCAL INFILE "text.txt" INTO table mytable; 

J’ai eu le même problème avec ‘secure-file-priv’. Les commentaires dans le fichier .ini ne fonctionnaient pas et le déplacement du fichier dans le répertoire spécifié par «secure-file-priv» ne fonctionnait pas.

Enfin, comme suggéré par dbc, rendre “secure-file-priv” égal à une chaîne vide travaillée. Donc, si quelqu’un est coincé après avoir essayé les réponses ci-dessus, j’espère que cela vous aidera.

J’ai eu toutes sortes de problèmes avec ça. Je changeais my.cnf et toutes sortes de choses folles que d’autres versions de ce problème ont essayé de montrer.

Ce qui a fonctionné pour moi:

L’erreur que j’avais

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

J’ai pu résoudre le problème en ouvrant /usr/local/mysql/support-files/mysql.server et en changeant la ligne suivante:

 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" -- $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$? 

à

 $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --secure-file-priv="" $other_args >/dev/null & wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$? 

J’ai eu ce problème sur Windows 10. “–secure-file-priv en MySQL” Pour résoudre ce problème, j’ai fait ce qui suit.

  1. Dans Windows search (en bas à gauche), j’ai tapé “powershell”.
  2. Clic droit sur powershell et exécuté en tant qu’administrateur.
  3. Navigation dans le fichier bin du serveur. (C: \ Program Files \ MySQL \ MySQL Server 5.6 \ bin);
  4. Tapé ./mysqld
  5. Hit “enter”

Le serveur a démarré comme prévu.