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
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:
- déplacez votre fichier dans le répertoire spécifié par
secure-file-priv
. - 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.
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é.
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 = ""
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;
voici ce qui a fonctionné pour moi dans Windows 7 pour désactiver secure-file-priv
(Option #2 de réponse de vhu ):
- Arrêter le serveur MySQL service en allant dans
services.msc
. - passez à
C:\ProgramData\MySQL\MySQL Server 5.6
(ProgramData
était un dossier caché dans mon cas). - ouvrir le fichier
my.ini
dans Bloc-notes. - la Recherche pour "secure-fichier-priv'.
- Comment la ligne en ajoutant des '#' au début de la ligne.
- Enregistrer le fichier.
- 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.
si le fichier est local pour 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 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.
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=$?
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.
- dans windows search (en bas à gauche), j'ai tapé "powershell".
- droite a cliqué sur powershell et a couru en tant qu'administrateur.
- Navigué vers le serveur de fichier bin. (C:\Program fichiers\MySQL\MySQL Server 5.6\bin);
- tapé ./ mysqld
- appuyez sur "entrée"
Le serveur a démarré comme prévu.