J'exécute MySQL 5.7 sur une machine Windows 10. J'ai lu tous les sujets SO sur ce sujet et je n'ai toujours pas compris comment charger mes données et surmonter cette erreur:
Error Code: 1290. The MySQL server is running with the --secure-file-priv
option so it cannot execute this statement
J'ai 1) vérifié les paramètres pour les modifier afin de pouvoir les charger à partir du répertoire dans lequel j'ai sauvegardé mon jeu de données, 2) ouvert MySQL en tant qu'administrateur, vérifié la ligne de commande et confirmé que le fichier sécurisé pointe bien sur mon répertoire, 3) et confirmé dans le fichier init qu'il pointe vers le bon répertoire contenant mon fichier. J'ai essayé de changer l'emplacement de l'ensemble de données afin qu'il soit dans un nouveau dossier et de confirmer qu'il y avait été déplacé avec les méthodes ci-dessus et que cela ne fonctionnait toujours pas.
Toute aide serait la bienvenue, merci.
Je ne peux pas reproduire le problème.
mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.7.13 |
+-----------+
1 row in set (0,00 sec)
mysql> SELECT @@GLOBAL.secure_file_priv;
+---------------------------+
| @@GLOBAL.secure_file_priv |
+---------------------------+
| NULL |
+---------------------------+
1 row in set (0,00 sec)
-- USE ...
mysql> LOAD DATA INFILE '/var/lib/mysql-files/myfile.csv'
-> INTO TABLE `test_files`
-> COLUMNS TERMINATED BY ',' ENCLOSED BY '\"'
-> LINES TERMINATED BY '\n';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv
option so it cannot execute this statement
Changer de fichier: /etc/mysql/my.cnf
[mysqld]
.
.
.
secure_file_priv=/var/lib/mysql-files/
.
.
.
Redémarrez MySQL.
mysql> SELECT @@GLOBAL.secure_file_priv;
+---------------------------+
| @@GLOBAL.secure_file_priv |
+---------------------------+
| /var/lib/mysql-files/ |
+---------------------------+
1 row in set (0,00 sec)
mysql> LOAD DATA INFILE '/var/lib/mysql-files/myfile.csv'
-> INTO TABLE `test_files`
-> COLUMNS TERMINATED BY ',' ENCLOSED BY '\"'
-> LINES TERMINATED BY '\n';
Query OK, 3 rows affected (0,00 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
Sur MACOSX, ajoutez .my.cnf à votre répertoire personnel avec le contenu suivant:
[mysqld_safe]
[mysqld]
secure_file_priv=""
Cela fonctionne dans MacOs Sierra 10.12.6:
utiliser la commande
mysql --help | more
et cherchez une ligne où il est écrit:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf
~/.my.cnf
Dans mon cas, j'ai essayé de créer un fichier my.cnf dans le répertoire personnel, mais cela n'a pas fonctionné. La seule solution que j'ai trouvée est de créer le fichier dans le dossier, etc. avec
Sudo vim /etc/my.cnf
et mis dedans
[mysqld_safe]
[mysqld]
secure-file-priv = ""
Ensuite, vous pouvez vérifier que tout fonctionne avec
select @@GLOBAL.secure_file_priv;
dans mysql et vérifiez que la valeur est vide et différente de NULL.
Enfin, enregistrez les fichiers dans le répertoire/tmp, puis déplacez-les dans le répertoire souhaité. Alternativement (mais éventuellement dangereux) utiliser
chmod 1777 dir
où dir est le nom du répertoire dans lequel vous écrivez les fichiers.
Notez que sous Windows, définissez 'secure_file_priv' sur un chemin différent ou désactivez-le complètement en le définissant sur:
secure_file_priv=""
peut ne pas fonctionner si le service MySQL s'exécute sur un compte disposant de peu de privilèges (installation 5.7 par défaut). Vous pouvez changer cela en sélectionnant le "compte système local" dans les services sous Propriétés -> Ouvrir une session.