mysqlでLOAD DATA LOCAL INFILEを有効にする


10

LOAD DATA LOCAL INFILEデフォルトでは有効になっていません。通常は、に配置することlocal-infile=1で有効になりmy.cnfます。ただし、すべてのインストールで機能するわけではありません。私の経験では、Debian 7では機能しましたが、Debian 7ミニマルでは機能しませんでしたが、どちらのインストールも同じプリコンパイル済みのdebパッケージからのものです。OpenVZ VPSの両方で。

なぜデバッグする方法local-infile=1インストールのための仕事、そしてどのように安全にアクティブにするためにはありませんかLOAD DATA LOCAL INFILE

回答:


19

MySQL Debian-7ミニマルがを使用できない場合はlocal_infile、コンパイルに使用されるすべてのmakeファイルを調べて、デフォルトで無効になっているか、またはlocal_infileDebian-7で有効になっているかを確認します。

この種の時間をかける前に、以下を実行してください:

SHOW GLOBAL VARIABLES LIKE 'local_infile';
SET GLOBAL local_infile = 'ON';
SHOW GLOBAL VARIABLES LIKE 'local_infile';

次のようになります。

mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

mysql> SET GLOBAL local_infile = 'ON';
Query OK, 0 rows affected (0.06 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile  | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql>

それでもと'OFF'表示される場合は、コンパイラ設定を詳しく調べて有効にします。

に設定されていれば'ON'、問題ありません。

言わなかったことに注意してください

SET GLOBAL local_infile = 1;

使うと言った

SET GLOBAL local_infile = 'ON';

オプションlocal_infileは、ブール、数値ではありません

これを設定する場合 my.cnf

[mysqld]
local_infile=ON

mysqlを再起動しても機能しません。mysqlを次のように起動する必要があります。

echo "SET GLOBAL local_infile = 'ON';" > /var/lib/mysql/init_file.sql
chown mysql:mysql /var/lib/mysql/init_file.sql
service mysql stop
service mysql start --init-file=/var/lib/mysql/init_file.sql
rm -f /var/lib/mysql/init_file.sql

またはおそらくこれに追加 my.cnf

[mysqld]
init-file=/var/lib/mysql/init_file.sql

次に、mysqlを再起動します。

試してみる !!!


本当に必要なデバッグの実践的な指示に感謝します。最初のステップでは、示されているように、私は間違った軌道に乗っていることを明らかにしましたlocal_infile | ON 。問題はmysqlではなくPHP、mysql-PHPコネクター/ドライバー(mysqli)のようです。
Googlebot 2013

:私はそれがmsqliで動作するようにPHPでこれを使用する必要がありました $con = mysqli_init(); $con->options(MYSQLI_OPT_LOCAL_INFILE, true);
ラドゥはBogdan

PHP mysqli.allow_local_infile = Onで有効にすることGLOBAL local_infile = 'ON';は、すでにオンになっていたので私にとっては良いことでした。
Rolands.EU 2019年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.