J'apprends MySQL et j'ai essayé d'utiliser une LOAD DATA
clause. 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 fonctionne avec l'option --secure-file-priv, il ne peut donc 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 ne trouve toujours pas de solution.
J'utilise MySQL 5.6
mysqldump --tab
, comme si ce n'était pas assez difficile d'extraire vos propres données de mysql.LOAD DATA LOCAL INFILE ...
Réponses:
Cela fonctionne comme prévu. Votre serveur MySQL a été démarré avec l' option --secure-file-priv qui limite essentiellement 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:
secure-file-priv
.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 (selon la plate-forme) et my.ini.la source
--secure-file-priv
mêmes.SHOW VARIABLES LIKE "secure_file_priv";
J'ai eu le même problème. J'ai finalement résolu en utilisant l'
LOCAL
option de la commandeLOAD 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
la source
C:\ProgramData\MySQL\MySQL Server 5.7\Uploads
, 2. la désactivationsecure_file_priv
dansmy.ini
et redémarrer mysql 3. Celui - ci! Merci :)--local-infile
drapeau lors de l'exécutionmysql
. stackoverflow.com/questions/10762239/…The used command is not allowed with this MySQL version
de MySQL 8.0Sur Ubuntu 14 et Mysql 5.5.53, ce paramètre semble être activé par défaut. Pour le désactiver, vous devez l'ajouter
secure-file-priv = ""
à votre fichier my.cnf sous le groupe de configuration mysqld. par exemple:-la source
# secure-file-priv = ~
cela, alors elle a toujours l'erreur car la valeur indique que leNULL
fait de cette façon résout le problème lorsque vous souhaitez choisir les répertoires vers lesquels vous pouvez exporter sur le serveur, etc.Je travaille sur MySQL5.7.11 sur Debian, la commande qui a fonctionné pour moi pour voir le répertoire est:
la source
SHOW VARIABLES LIKE "secure_file_priv";
je reçoisERROR 1146 (42S02): Table 'performance_schema.session_variables' doesn't exist
ce qui est également jeté dans d'autres circonstances et je devrai éventuellement y faire face. LaSELECT @@global.secure_file_priv;
commande a cependant produit le résultat attendu.Voici ce qui a fonctionné pour moi dans Windows 7 pour désactiver
secure-file-priv
(Option # 2 de la réponse de vhu ):services.msc
.C:\ProgramData\MySQL\MySQL Server 5.6
(ProgramData
était un dossier caché dans mon cas).my.ini
fichier dans le bloc-notes.secure-file-priv=""
services.msc
.la source
Si le fichier est local sur votre ordinateur, utilisez LOCAL dans votre commande
la source
@vhu
Je l'ai fait
SHOW VARIABLES LIKE "secure_file_priv";
et il est revenuC:\ProgramData\MySQL\MySQL Server 8.0\Uploads\
donc quand je l'ai branché, ça n'a toujours pas fonctionné.Lorsque je suis allé directement dans le fichier my.ini, j'ai découvert que le chemin était formaté un peu différemment:
C:/ProgramData/MySQL/MySQL Server 8.0/Uploads
Puis quand je l'ai couru avec ça, ça a marché. La seule différence étant la direction des barres obliques.
la source
J'ai eu le même problème avec 'secure-file-priv'. Les commentaires dans le fichier .ini n'ont pas fonctionné et le déplacement du fichier dans le répertoire spécifié par 'secure-file-priv' n'a pas fonctionné non plus.
Enfin, comme suggéré par dbc, faire en sorte que 'secure-file-priv' soit égal à une chaîne vide fonctionne. Donc, si quelqu'un est coincé après avoir essayé les réponses ci-dessus, j'espère que cela vous aidera.
la source
La chose qui a fonctionné pour moi:
secure-file-priv
.Pour trouver ce type:
local_infile = 1
.Faites cette saisie:
Si vous obtenez:
Ensuite, définissez-le sur une saisie:
la source
Ce fil a été vu 522k fois au moment de cet article. Honnêtement, quand MySQL est-elle devenue notre maman déraisonnable et trop protectrice ? Quelle longue tentative de sécurité - qui ne fait que nous enchaîner!
Après de nombreuses recherches et de nombreuses tentatives, tout a échoué.
Ma solution:
la source
J'ai créé un script d'importation NodeJS si vous exécutez nodeJS et que vos données sont sous la forme suivante (guillemet double + virgule et \ n nouvelle ligne)
Celui-ci est configuré pour s'exécuter sur http: // localhost: 5000 / import .
Je vais ligne par ligne et crée une chaîne de requête
server.js
ImportRoutes.js
db.js est le fichier de configuration
Avertissement: Ce n'est pas une solution parfaite - je ne le publie que pour les développeurs qui ont un calendrier et ont beaucoup de données à importer et qui rencontrent ce problème ridicule. J'ai perdu beaucoup de temps à ce sujet et j'espère épargner à un autre développeur le même temps perdu.
la source
J'ai eu toutes sortes de problèmes avec ça. Je modifiais my.cnf et toutes sortes de choses folles que d'autres versions de ce problème essayaient de montrer.
Ce qui a fonctionné pour moi:
L'erreur que j'obtenais
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
J'ai pu le réparer en ouvrant /usr/local/mysql/support-files/mysql.server et en changeant la ligne suivante:
à
la source
Si vous utilisez Ubuntu, vous devrez peut-être également configurer Apparmor pour autoriser MySQL à écrire dans votre dossier, par exemple voici ma configuration:
Ajoutez cette ligne au fichier /etc/apparmor.d/usr.sbin.mysqld:
Ajoutez ensuite ces 2 lignes de configuration aux sections /etc/mysql/my.cnf:
Voici mon SQL:
Ça a marché pour moi. Bonne chance!
la source
Pour la version mysql 8.0, vous pouvez faire ceci:
Cela a fonctionné pour moi sur Mac High Sierra
la source
J'ai eu ce problème sur Windows 10. "--secure-file-priv dans MySQL" Pour résoudre ce problème, j'ai fait ce qui suit.
Le serveur a démarré comme prévu.
la source
MySQL utilise cette variable système pour contrôler où vous pouvez importer vos fichiers
Le problème est donc de savoir comment modifier les variables système telles que
secure_file_priv
.mysqld
sudo mysqld_safe --secure_file_priv=""
maintenant vous pouvez voir comme ceci:
la source
Chez macOS Catalina, j'ai suivi ces étapes pour définir
secure_file_priv
1.Arrêtez le service MySQL
2.Redémarrez MYSQL en affectant les variables système --secure_file_priv
Remarque: l'ajout d'une valeur vide résout le problème pour moi et MYSQL exportera les données vers le répertoire / usr / local / mysql / data / YOUR_DB_TABLE / EXPORT_FILE
Merci
la source
Sans modifier aucun des fichiers de configuration ..
secure_file_priv
aide de la commande affichée par @vhu:SHOW VARIABLES LIKE "secure_file_priv"
.select * from table into outfile 'secure_file_priv_PATH/OUTPUT-FILE' ... rest of your query
cela a fonctionné pour mon dans mysql-shell sur ubuntu 18.04 LTS mysql 5.7.29
la source