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 tourne avec l'option --secure-file-priv, il ne peut donc pas exécuter cette instruction.""

Comment faire face à cette erreur?

j'ai coché une autre question sur le même message d'erreur , mais ne pouvez toujours pas trouver une solution.

j'utilise MySQL 5.6

199
demandé sur Community 2015-09-23 13:43:53

9 réponses

ça marche comme prévu. Votre serveur MySQL a été démarré avec l'option --secure-file-priv qui limite fondamentalement les répertoires à partir desquels 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é dynamiquement. Pour ce faire, vérifiez vos paramètres de démarrage MySQL (en fonction de la plate-forme) et my.ini.
287
répondu vhu 2015-09-23 10:54:17

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 le hôte client et envoyé au serveur. Le fichier peut être donné en entier nom de chemin pour spécifier son exact emplacement. Si donné comme un chemin relatif le nom, le nom est interprété relativement au répertoire dans lequel le le programme client a été lancé.

147
répondu Staza 2016-11-16 11:10:59

sur Ubuntu 14 et Mysql 5.5.53 ce paramètre semble être activé par défaut. Pour le désactiver, vous devez ajouter secure-file-priv = "" pour votre mon.fichier cnf sous le groupe de configuration mysqld. par exemple:-

[mysqld]
secure-file-priv = ""
77
répondu Mustafa 2018-02-15 04:15:56

je travaille sur MySQL5.7.11 sur Debian, la commande qui a fonctionné pour moi pour voir le répertoire est:

mysql> SELECT @@ @ global.secure_file_priv;

24
répondu CarlosArturoFyuler 2016-05-25 19:34:43

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

  1. Arrêter le serveur MySQL service en allant dans services.msc .
  2. passez à C:\ProgramData\MySQL\MySQL Server 5.6 ( ProgramData était un dossier caché dans mon cas).
  3. ouvrir le fichier my.ini dans Bloc-notes.
  4. la Recherche pour "secure-fichier-priv'.
  5. Comment la ligne en ajoutant des '#' au début de la ligne.
  6. Enregistrer le fichier.
  7. démarrer le service serveur MySQL en allant dans services.msc .

Pour le Serveur MySQL 5.7.16 et au-dessus, veuillez vous référer à la dbc de commentaire ci-dessous.

10
répondu Ramnath 2017-09-26 04:35:32

si le fichier est local pour votre machine, utilisez le LOCAL dans votre commande

LOAD DATA LOCAL INFILE "text.txt" INTO table mytable;
6
répondu garyrgilbert 2018-05-04 14:07:29

j'ai eu le même problème avec les "secure-fichier-priv'. Commentant dans le .fichier ini n'a pas de travail ni de déplacer le fichier dans le répertoire spécifié par "secure-fichier-priv'.

finalement, comme DBC l'a suggéré, faire' secure-file-priv ' égal à une chaîne vide a fonctionné. Donc, si quelqu'un est coincé après avoir essayé les réponses ci-dessus, en espérant faire ceci aidera.

4
répondu Rsc Rsc 2016-11-02 20:59:10

j'ai eu toutes sortes de problèmes avec cela. J'ai changé mon.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 j'ai été faire

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

j'ai pu le corriger en ouvrant /usr/local/mysql/support-files/mysql.serveur et changer 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=$?
3
répondu notthehoff 2016-12-01 20:54:11

j'ai eu ce problème sur windows 10. "--secure-file-priv in 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. droite a cliqué sur powershell et a couru en tant qu'administrateur.
  3. Navigué vers le serveur de fichier bin. (C:\Program fichiers\MySQL\MySQL Server 5.6\bin);
  4. tapé ./ mysqld
  5. appuyez sur "entrée"

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

1
répondu Jason Allshorn 2017-10-01 22:05:45