11
votes

ERREUR 1148 MYSQL La commande usagée n'est pas autorisée avec cette version MySQL

J'utilise MySQL Charger les données locales infilières et je reçois cette erreur: xxx

Quel réglage pouvons-nous changer pour permettre aux données de charge locales infilières?

Voici le code DRUPAL 7 que nous utilisons: xxx


2 commentaires

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


5 Réponses :


28
votes

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: xxx pré>

Solutions: strong> p>

  1. Utilisez - local-infile = 1 code> argument sur la commande MySQL Commandline: P>

    Lorsque vous démarrez MySQL sur le terminal, incluez - local-infile = 1 code> argument, quelque chose comme ceci: p>

    [mysqld]
    local-infile 
    
    [mysql]
    local-infile 
    


0 commentaires

2
votes

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)
);


0 commentaires

0
votes

Le hérité mysql_connect a également un paramètre ' client_flag code>' qui peut être utilisé pour définir le paramètre MySQL.

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> xxx pré>

Toutefois, vous pouvez également rencontrer l'erreur suivante: p>

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>
}


0 commentaires

0
votes

La raison principale pour laquelle nous utilisons le mot clé local est Expliqué dans le manuel MySQL:

D'autre part, vous n'avez pas besoin du privilège de fichier pour charger local Fichiers.

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].

plus sur cette locale / non locale ici: pHPMyAdmin Bug

Vous n'avez plus à vous soucier de faire des modifications à /etc/mysql/my.cnf


0 commentaires

0
votes

Il suffit de suivre le processus suivant pour résoudre le problème:

  1. Connectez-vous à MySQL à l'aide de la ligne de commande.

    ROOCHE MYSQL -U -P

  2. Vérifiez l'état local de l'infiloir:

    Afficher les variables comme 'local_infile';

  3. Si la sortie est éteinte, exécutez cette commande:

    SET GLOBAL LOCAL_INFILE = 1;

  4. Vérifiez à nouveau le statut:

    Afficher les variables comme 'local_infile';

  5. La sortie sera: Voir maintenant

  6. finalement redémarrez MySQL:

    Service MySQL Redémarrez


0 commentaires