Mysql

在 mysql 中啟用 LOAD DATA LOCAL INFILE

  • May 8, 2020

LOAD DATA LOCAL INFILE預設情況下未啟用。通常,它應該通過放置來local-infile=1啟用my.cnf。但它不適用於所有安裝。根據我的經驗,它適用於 Debian 7,但不適用於 Debian 7 minimum,儘管兩個安裝都來自同一個預編譯的 deb 包。兩者都在 OpenVZ VPS 上。

如何調試為什麼local-infile=1對安裝不起作用,以及如何安全啟動LOAD DATA LOCAL INFILE

如果 MySQL Debian-7 minimum 無法使用local_infile,請查看所有用於編譯的 make 文件,看看它是否預設禁用或是否local_infile為 Debian-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。

試一試 !!!

引用自:https://dba.stackexchange.com/questions/48751