J'utilise MySQL Quel réglage pouvons-nous changer pour permettre aux données de charge locales infilières? p> Voici le code DRUPAL 7 que nous utilisons: p> Charger les données locales infilières code> et je reçois cette erreur:
5 Réponses :
Chargement d'un fichier local dans MySQL est un danger de sécurité et est désactivé par défaut, vous souhaitez le laisser désactiver si vous le pouvez. Lorsqu'il n'est pas autorisé, vous obtenez cette erreur: Solutions: strong> p> Utilisez Lorsque vous démarrez MySQL sur le terminal, incluez
- local-infile = 1 code> argument sur la commande MySQL Commandline: P>
- local-infile = 1 code> argument, quelque chose comme ceci: p>
[mysqld]
local-infile
[mysql]
local-infile
En plus de l'utilisation de local-infileur code> avec le serveur MySQL (vous pouvez également le mettre dans le fichier /etc/my.cnf), vous devez également activer le PDO de le permettre:
<?php
$pdo = new PDO($dsn, $user, $password,
array(PDO::MYSQL_ATTR_LOCAL_INFILE => true)
);
Le hérité mysql_connect a également un paramètre ' Le paramètre Client_Flags peut être une combinaison des éléments suivants
Constantes: 128 (Activer la manipulation locale de données de charge), mysql_Client_ssl,
Mysql_client_compress, mysql_client_ignore_space ou
Mysql_client_interactive. Lire la section sur le client MySQL
constantes pour plus d'informations. En mode SQL Safe, ce paramètre est
ignoré.
http://php.net/function.mysql-connect P>
blockQquote> Exemple: p> Toutefois, vous pouvez également rencontrer l'erreur suivante: p> client_flag code>' qui peut être utilisé pour définir le paramètre MySQL.
cat /etc/apparmor.d/usr.sbin.mysqld
# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>
/usr/sbin/mysqld {
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/user-tmp>
#include <abstractions/mysql>
#include <abstractions/winbind>
capability dac_override,
capability sys_resource,
capability setgid,
capability setuid,
network tcp,
/etc/hosts.allow r,
/etc/hosts.deny r,
/etc/mysql/*.pem r,
/etc/mysql/conf.d/ r,
/etc/mysql/conf.d/* r,
/etc/mysql/*.cnf r,
/usr/lib/mysql/plugin/ r,
/usr/lib/mysql/plugin/*.so* mr,
/usr/sbin/mysqld mr,
/usr/share/mysql/** r,
/var/log/mysql.log rw,
/var/log/mysql.err rw,
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld.pid w,
/var/run/mysqld/mysqld.sock w,
/run/mysqld/mysqld.pid w,
/run/mysqld/mysqld.sock w,
# Custom import folders start
# These folders will also be read/writeable by mysql.
/import/ r,
/import/* rw,
# Custom import folders end
/sys/devices/system/cpu/ r,
# Site-specific additions and overrides. See local/README for details.
#include <local/usr.sbin.mysqld>
}
La raison principale pour laquelle nous utilisons le mot clé local est Expliqué dans le manuel MySQL: P>
D'autre part, vous n'avez pas besoin du privilège de fichier pour charger local Fichiers. P> blockQuote>
Donc, si vous avez en fait avoir accès au serveur au serveur, essayez de passer à l'aide du mot «local» dans la requête SQL et copiez plutôt le fichier sur le serveur et le répertoire MySQL / DATA / [NOM]. p>
plus sur cette locale / non locale ici: pHPMyAdmin Bug P >
Vous n'avez plus à vous soucier de faire des modifications à /etc/mysql/my.cnf p>
Il suffit de suivre le processus suivant pour résoudre le problème: p>
Connectez-vous à MySQL à l'aide de la ligne de commande. P>
ROOCHE MYSQL -U -P P> LI>
Vérifiez l'état local de l'infiloir: p>
Afficher les variables comme 'local_infile'; p> li>
Si la sortie est éteinte, exécutez cette commande: p>
SET GLOBAL LOCAL_INFILE = 1; P> LI>
Vérifiez à nouveau le statut: p>
Afficher les variables comme 'local_infile'; p> li>
La sortie sera: Voir maintenant P> Li>
finalement redémarrez MySQL: p>
Service MySQL Redémarrez P> LI> ol>
Cela nécessite une nouvelle autorisation pendant un moment, peut-être que c'est ce que c'est le problème?
Ajouter --Local-Infile tout en invoquant MySQL. Ça marche. Par exemple: MySQL -H localhost - Local-Infile