Signification de File_priv dans users de la BD mysql
Bonjour à tous,
Voici le contexte:
J'ai eu application qui fonctionne correctement sur easyphp1.6, nous utilisons maintenant easyphp1.8 mais on a configuré les paramètres de php.ini de manière à ce que cela fonctionne.
Nous utilisons un serveur où figure 3 applications différentes.
Mais et voici mon problème, j'ai des erreurs avec le code sql:
load data infile chemin... into table FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES
Je l'utilise dans la fonction php mysql_query qui me retourne false.
Je pensais que l'administrateur ne me donne pas tous les droits et particulièrement le droit file_priv de la table user de la base de données mysql.
Est-ce que je me trompe? Faut-il avoir ce privilège pour importer des fichiers csv dans une base de données mysql?
Re: Signification de File_priv dans users de la BD mysql
Citation:
Envoyé par BBF
Faut-il avoir ce privilège pour importer des fichiers csv dans une base de données mysql?
Oui, si tant est que le fichier à importer se trouve sur le serveur.
Pour importer un fichier situé sur le poste client, tu peux utiliser LOAD DATA LOCAL INFILE (sans droit particulier).
Signification de File_priv dans users de la BD mysql
Merci c'est exactement cela.
Je vois un peu plus clair.
Le script PHP sauvegarde le fichier à importer dans le dossier www/Eservices(nom de l'application)/import/ puis il importe à partir de ce dossier le fichier dans la base de données.
Donc, il ne faut pas que j'utilise le LOCAL (si j'ai bien compris) et que je mets le privilège file_priv sur Yes.
Peux-tu m'expliquer le role de ces paramètres?
Signification de File_priv dans users de la BD mysql
Oui, je dois donner des détails supplémentaires.
En fait, on utilise une application écrit sous php testé sur easyphp 1.6.
Depuis 1 an, on travaille en local et aucun problème n'est apparu mais la base a grossi et pour des raisons de sécuriter, on a demandé un serveur sous easyphp 1.8 à notre service informatique.
Après s'être battu avec le service pour trouver la bonne configuration du fichier php.ini pour faire fonctionner correctement l'application sur 1.8, on est tombé sur ce problème d'importation.
La configuration actuelle est la suivante:
un serveur utilisant easyphp 1.8 où l'application et les données sont sauvegardées.
4 ordinateurs qui utilisent l'application.
Donc, si j'ai bien compris, vu que le script php sauvegarde le fichier sur le serveur, il faut absolument le paramètre file_priv.
J'espère que j'étais clair.
Dis moi si je me suis trompé.
Merci
Re: Signification de File_priv dans users de la BD mysql
Citation:
Envoyé par BBF
Donc, si j'ai bien compris, vu que le script php sauvegarde le fichier sur le serveur, il faut absolument le paramètre file_priv.
J'avais zappé le fait que tu utilises EasyPHP :)
En fait comme je te disais, tu peux utiliser soit LOAD DATA soit LOAD DATA LOCAL puisque les serveurs MySQL et Web sont sur la même machine (regroupés dans EasyPHP).
Le problème du paramètre file_priv ne se pose que dans le cas d'un LOAD DATA INFILE (il faut rajouter ce privilège pour que l'utilisateur MySQL lise le fichier sur le serveur).
Avec un LOAD DATA LOCAL INFILE, c'est le client (donc le script PHP) qui lit le fichier et le transmet au serveur MySQL. Je te conseille plutôt cette méthode puisqu'il n'y a aucun droit spécial à configurer...
Signification de File_priv dans users de la BD mysql
Merci pour tes réponses, je commence à comprendre.
Là je fais un test sur un portable en dehors du réseau pour plus de sécurité et je comprends pas ce qui arrive.
J'ai donc easyphp 1.8 bien configuré et j'ai donc mis LOAD DATA LOCAL INFILE et ca ne fonctionne pas mais dès que je mets le paramètre file_priv , l'importation fonctionne. Là aussi, c'est un cas particulier?
Alors, je me dis que même pour l'application sur le serveur et la base, je dois mettre file_priv pour être sûr.
Y-a-t-il un risque pour les autres application du serveur si on met ce paramètre sur Yes (ce sont des arguments pour que le service informatique suive)?
Merci.
Dernier détail pour me rassurer:
Entre easyphp 1.6 et 1.8 pour que l'application développée sur 1.6 fonctionne sur 1.8, il faut que:
register_global = on
error_reporting = E_ALL & ~E_NOTICE
allow_call__time_pass_reference = on
S'il me manque des points, peux-tu me les indiquer?
Sinon, on fait çà pour faciliter le travail du service informatique.
Merci.
Re: Signification de File_priv dans users de la BD mysql
Citation:
Envoyé par BBF
J'ai donc easyphp 1.8 bien configuré et j'ai donc mis LOAD DATA LOCAL INFILE et ca ne fonctionne pas mais dès que je mets le paramètre file_priv , l'importation fonctionne. Là aussi, c'est un cas particulier?
Bizarre, ce n'est pas ce que dit la doc et j'ai testé, pour moi ça fonctionne bien sans privilège file_priv.
Citation:
Y-a-t-il un risque pour les autres application du serveur si on met ce paramètre sur Yes (ce sont des arguments pour que le service informatique suive)?
Oui et non, ce privilège signifie seulement que l'utilisateur peut faire un LOAD DATA INFILE ou un SELECT INTO OUTFILE sur les fichiers auxquels le serveur MySQL a accès.
Citation:
Dernier détail pour me rassurer:
Entre easyphp 1.6 et 1.8 pour que l'application développée sur 1.6 fonctionne sur 1.8, il faut que:
register_global = on
error_reporting = E_ALL & ~E_NOTICE
allow_call__time_pass_reference = on
Je n'en sais rien, je n'utilise pas EasyPHP ;)
Signification de File_priv dans users de la BD mysql
Merci.
Je pense avoir tout au main pour régler ce problème.
Merci et peut être à bientôt.
:)
Signification de File_priv dans users de la BD mysql
Après quelques essais avec l'administratuer et le service informatique, totu fonctionne correctement dans l'importation des fichiers dans la base.
C'était bien le file_priv qui posait problème. Avec file_priv sur Y, tout est OK.
Merci encore pour ces indications.
:P